2023-03-21

Ubuntu 23.04 のインストーラー

2023 年 4 月 20 日にリリース予定 [1] の今度の Ubuntu 23.04 の開発コードは、“⁠Lunar Lobster⁠”(月のロブスター)と名付けられています。リリース前の Daily build [2] の iso ファイルをインストールしてみました。

今回の 23.04 のリリースで、Ubuntu Desktop 向けのインストーラが、従来の Ubiquity から、Google が開発した Flutter という UI の SDK をベースとしたインストーラに変更されるようです。

以下、インストール時のスクリーンショットをまとめました。ダウンロードした iso イメージを GNOME Boxes の仮想マシンで起動しています。

 

しばらくすると言語の選択画面が表示されます。日本語を選択すると、それに伴いメッセージが日本語に変わります。

 

「Ubuntu をインストール」を選択し、キーボードのレイアウト、ネットワークの接続、あらかじめインストールするアプリのパターン、インストール方法を選択するとインストールが始まります。

 

パッケージがストレージにインストールされている間に、タイムゾーン、アカウント、外観(明るい、暗い)を設定します。

 

再起動の画面は、従来どおりです。依然としてインストールメディアを取り外さないと再起動できないようです。

 

参考サイト

  1. Releases - Ubuntu Wiki
  2. Ubuntu 23.04 (Lunar Lobster) Daily Build
  3. First Look at Ubuntu 23.04's Brand-New Desktop Installer Written in Flutter - 9to5Linux [2022-12-15]
  4. bitWalk's: Ubuntu の新しいインストーラー [2022-08-14]
  5. Flutter's future on Ubuntu/Linux? - Desktop - Ubuntu Community Hub
  6. Google & Ubuntu Team Up to Bring Flutter Apps to Linux - OMG! Ubuntu! [2020-07-08]
  7. Google and Ubuntu:Flutter app development with Linux support | Flutter Community [2020-08-10]

 

 

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村 にほんブログ村 IT技術ブログ オープンソースへ
にほんブログ村

オープンソース - ブログ村ハッシュタグ
#オープンソース



2023-03-06

QChart で散布図を作成 〜 PySide6 〜

PySide (Qt for Python) は、Qt(キュート)の Python バインディングで、GUI などを構築するためのクロスプラットフォームなライブラリです。配布ライセンスは LGPL で公開されています(商用ライセンスも有り)。最新のバージョンは Qt6 に対応した PySide6(記事執筆時点で 6.4.2)です。

QChart を使うと、PySide6 だけで色々チャートを作成することができるのですが、普段はチャートの作成に Matplotlib 系のライブラリを使うことが多いので、QChart の使い方を忘れてしまいます。複数のデータ群を QChart を利用して散布図にプロットしようとしたのですが、思うようにできずに苦戦してしまったので、この機会に整理しました。

下記の OS 環境で動作確認をしました。

Fedora Linux 37 (Server Edition) x86_64
python3.11 python3-3.11.2-1.fc37.x86_64
PySide6 6.4.2

ここで紹介するサンプルは、乱数を使って単純にデータ点をプロットするだけのものです。時間軸にしたいときもあるので、敢えて QValueAxis クラスを使ってサンプルを作成しています。

qtcharts_scatterchart_1.py
#!/usr/bin/env python
# coding: utf-8
import sys
import numpy as np
import pandas as pd
from PySide6.QtCharts import (
QChart,
QChartView,
QScatterSeries,
QValueAxis,
)
from PySide6.QtCore import Qt
from PySide6.QtGui import (
QPainter,
QPen,
)
from PySide6.QtWidgets import (
QApplication,
QMainWindow,
)
class ScatterChart(QChartView):
def __init__(self):
super().__init__()
chart = self.init_ui()
self.setChart(chart)
self.setRenderHint(QPainter.Antialiasing)
def init_ui(self):
chart = QChart()
chart.setTitle('Scatter Chart')
chart.setDropShadowEnabled(False)
chart.legend().hide()
axis_x = QValueAxis()
chart.addAxis(axis_x, Qt.AlignmentFlag.AlignBottom)
axis_y = QValueAxis()
chart.addAxis(axis_y, Qt.AlignmentFlag.AlignLeft)
list_sample = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L']
list_x = list()
list_y = list()
for sample in list_sample:
series = QScatterSeries()
series.setName(sample)
series.setMarkerShape(QScatterSeries.MarkerShape.MarkerShapeCircle)
series.setMarkerSize(5)
series.setPen(QPen(Qt.PenStyle.NoPen))
df = pd.DataFrame(np.random.random(size=(100, 2)), columns=['X', 'Y'])
for r in range(len(df)):
xy_pair = df.iloc[r, :].to_list()
series.append(*xy_pair)
list_x.append(xy_pair[0])
list_y.append(xy_pair[1])
chart.addSeries(series)
series.attachAxis(axis_x)
series.attachAxis(axis_y)
axis_x.setRange(min(list_x), max(list_x))
axis_y.setRange(min(list_y), max(list_y))
return chart
class Example(QMainWindow):
def __init__(self):
super().__init__()
scatter = ScatterChart()
self.setCentralWidget(scatter)
self.resize(500, 500)
self.setWindowTitle('ScatterChart')
def main():
app = QApplication(sys.argv)
ex = Example()
ex.show()
sys.exit(app.exec())
if __name__ == '__main__':
main()
qtcharts_scatterchart_1.py の実行例

参考サイト

  1. QChart - Qt for Python
  2. QValueAxis - Qt for Python
  3. QScatterSeries - Qt for Python

 

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村 にほんブログ村 IT技術ブログ オープンソースへ
にほんブログ村

オープンソース - ブログ村ハッシュタグ
#オープンソース