2025-05-28

【備忘録】Matplotlib で保存するプロットのデフォルト名

Matplotlib は、Python と NumPy のためのプロットライブラリです。Tkinter、wxPython、Qt、GTK のような汎用 GUI ツールキットを使ったアプリケーションにプロットを埋め込むためのオブジェクト指向 API を提供しています。

Wikipedia より引用、翻訳

JupyterLab 上では、Matplotlib でプロットしたチャートを保存するには、plt.savefig(filename) を使うのですが、そうでないときは、以下のようにチャート (figure) の下にナビゲータバーが表示されているので、右端のフロッピーディスクを模した保存用ボタンをクリックして画像として保存します。

保存用のダイアログに表示されたデフォルトのファイル名は Figure_1 になっています。

このデフォルトのファイル名を変更したい

些細なことのようですが、このデフォルトのファイル名 Figure_1 を変えられないかどうか調べたところ、Stack Overflow [1] に該当するやりとりを見つけました。保存するファイルのデフォルトのファイル名を変更するサンプルを紹介します。

下記の OS 環境で動作確認をしています。

Fedora Linux 42 Workstation x86_64
Python 3.13.3
matplotlib 3.10.3
numpy 2.2.6

サンプル・コードを以下の通りです。

sample_mpl_save.py
# This is based on the following sample:
# https://matplotlib.org/stable/users/getting_started/
import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 2 * np.pi, 200)
y = np.sin(x)

fig, ax = plt.subplots()
ax.plot(x, y)

# デフォルトのファイル名を Untitled に設定
c = fig.canvas
ext = c.get_default_filetype()
c.get_default_filename = lambda: f"Untitled.{ext}"

plt.show()

一手間加えるだけで、デフォルトのファイル名を Figure_1 から Untitled へ変更できました。

ちなみに、PySide6 に Matplotlib のチャートを埋め込んで Matplotlib のナビゲーションツールバー (NavigationToolbar2QT) を利用してチャートを画像形式で保存する時には、デフォルトのファイル名が image.png になります。さすがに GUI アプリではデフォルトの保存ファイル名を自由に設定したいので、同じような考え方でファイル名を変更しています。

参考サイト

  1. python - How to change default filename from Matplotlib NavigationToolbar in a PyQt5 application? - Stack Overflow [2017-01-16]

 

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

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



このエントリーをはてなブックマークに追加

2025-05-25

OS のマーケットシェア

久しぶりに StatCounter のサイトの OS のマーケットシェアを確認しました。このサイトの統計は、サンプリングバイアスを補正するための処理がされていないので、誤った傾向をとらえてしまう可能性はありますが、おおもかな傾向を探るためにときどき眺めています。

さて、グローバルでは相変わらず Anndroid が高いシェア (45.68%) を保っています(下表)。

Source: StatCounter Global Stats - OS Market Share

Android がトップシェアと言っても、自分の周り、例えば電車やバスに乗っていて、座っている人の多くが見つめているスマホは明らかに iPhone が多いように感じます。

車内に座っている人のほとんどがスマホや携帯電話を見つめている光景は異様だと感じた時期が過去にはありました。しかし、今ではそれが日常になってしまって異様だと思わなくなってしまいました。

これは日本特有のことなのでしょうか?

試しに日本だけに絞った統計をみると Windows が 32.85%、iOS が 31.02% になっていて Android は 19.02% です。

Source: StatCounter Global Stats - OS Market Share

減少してきているとはいえ、かろうじて Windows がトップ (32.85%) で、次の iOS は 31.02% でトップと拮抗しています。

Windows の場合は(ノート)PC でのアクセスになるでしょうから、電車などの混雑した狭い車内でみかける頻度は限られます。スマホに iPhone が多いと感じることと iOS のシェアの大きさが一致していると考えて良いのかもしれません。

一方、最近は PC よりスマホのシェアの方が断然多いように思うのですが、Windows が多いのは日本固有の傾向なのかが気になり、米国に絞った統計も見てみました。

Source: StatCounter Global Stats - OS Market Share

米国でも Windows はトップ (33.75%) で、最近のシェアは横ばいか、むしろじわりと増えているようにも見えます。次に iOS のシェア (27.88%) が多いのですから、日本と米国の OS のマーケットシェアは概ね同じような傾向です。

日本では米国から輸入される自動車が少ないことに、トランプ大統領はご不満のようですが、デジタルの世界では OS をはじめとした多くが米国製に頼っていることをもっと評価して欲しいと思います。Windows、iOS そして Android はすべて米国発の製品です。日本は既に GAFAM のデジタル植民地になっているのかもしれません。

参考サイト

  1. Usage share of operating systems - Wikipedia
  2. 日本の道路をアメリカ車が走っていないのは「シンプルに品質不足だから」と海外メディアがツッコミ - GIGAZINE [2025-04-09]

 

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

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



このエントリーをはてなブックマークに追加

2025-05-21

OS なんてなんでもいいじゃん

Linux が好きで、自宅のメイン PC の OS はずっと Fedora Linux です。パソコンのハードウェア、ソフトウェア共に高機能になり、OS については Windows、macOS 以外の話題を耳にすることがすっかり少なくなってしまいました。今さら Linux を推奨したいわけではないのですが、それでも Linux 好きの言い分みたいなことをまとめたいと思い、つらつらと書き残しています。

今回は初回なので近況紹介です。😁

脱サラしてトレーダーに

私は半導体工場のエンジニアとして大学卒業後のキャリアをスタートして以来、転職を繰り返しながらもずっと半導体業界に身を置いてきました。

しかし SBI 証券と楽天証券が国内株取引の約定手数料の無料化に踏みきったのを知り [1]、意を決して会社を退職、投資の世界に飛び込みました。あと 1 年ぐらい勤め続ければ 60 歳定年を迎える予定でした。しかし、作ってみたかったデイトレの自動売買システム開発に取り組めるまたとないチャンスが到来したと感じ、今始めなければ必ずや後悔すると思ったのでした。

まあ、そんなにすぐに自動売買システムは完成しないことは重々承知の上、トレーディングをしながら自分が作りたいシステムを好きなようにプログラミングできることを楽しんでいる毎日です。

Windows でなければできないこと

自分のためにトレーディング・システムを作るのだから、これで好きな Linux にどっぷり浸ることができると期待していたのですが…、そんな期待は甘かったのでした。

取引ツール

証券会社が提供している取引ツールは Windows 上で動作します。どうしても Windows を使わなければならない事態に備えて Linux 化しなかった廉価なノート PC [2] に件の取引ツールをインストールしました。使ってみたところ、多機能で大変使いやすいツールだったので感動しました [3]。廉価で買った古い PC 上ですが、問題なく動作しているようです。

この取引ツールは、起動時に最新バージョンを確認して勝手にアップグレードしてしまう優れものです。歴史的に Windows のパッケージ管理機能がイマイチだった結果、アプリがセルフ・アップデートできるように進化したのだろうと感じました。

Microsoft Excel

Windows 上で動作する取引ツールは使いやすいのですが、自動取引についてはインターネットブラウザ (Firefox) で証券会社のサイトにログインして Python / Selenium のアプリで処理を自動化する方針でした。そうすれば Linux 上で開発して運用できると考えたからです。

Python / Selenium でマウスでクリックしたり入力したりする部分の自動化は難なく実現できましたが、デイトレ用に 1 秒間隔で常に株価データをブラウザ上から読み取っているため、複数銘柄への柔軟な対応および安定動作を確保するという課題がすぐに顕在化してしまいました。

この課題解消には時間がかかると考え、ひとまず方針変更をしました。つまり、株価取得および取引のために、証券会社が提供している取引ツールに付随する Excel アドインの機能を利用することにしたのです。

職場で使っていた Excel ですが、個人で購入したことはありませんでした。アマゾンで Excel 2024 永続版 [4] を購入して、アドインの機能を利用するために VBA でアプリの開発を始めました。

2 台目の Windows PC

今更ながら VBA のプログラミングに取り組み、リアルタイム(1 秒間隔)でターゲット銘柄(複数)の株価データを取得できるアプリを作り始めました。ところが、リアルタイムで株価データを収集している VBA アプリに修正などの変更を加えたければ、一旦アプリを止めなければなりません。止めてしまうと、その日の株価データに欠損値が出て、後でシミュレータで評価するのに支障が出ます。一方、ひとつの Excel で複数の VBA アプリを動かすことはできません。

日々、欠損の無いリアルタイムの株価データを収集したいので、開発環境としてもう一台 Windows PC を用意する必要が出てきました。幸い、購入した Excel のライセンスは 2 台分ありました。

現状、ディスプレイ 2 台と Windows ノート PC 本体の画面、ときどき Android タブレット画面を見ながらのトレーディングで、ディスプレイの追加は設置場所に困りました。そこで、追加する Windows PC は Windows 11 Pro を搭載したミニ PC を買うことにして [5]、メインの Linux マシンから Remmina [6] でリモート接続 (RDP) で Windows のデスクトップ画面を表示させて利用することにしました。

活躍する廉価な Windows PC

相変わらず Windows には使わないアプリが満載で、バックグラウンドで動いていてしっかりリソースを食っていたりするので、廉価 PC の非力な CPU が少しでも余裕を持って動作できるように、不要なアプリを見つけてはひたすらアンインストールする作業を続けて、専業 PC に仕立てました。

流行りのゲームで遊ぶのでなければ、廉価な Windows PC でも一手間かければしっかり、しかも低電力で働いてくれます。

納得できる売買アルゴリズムを目指して

自動取引をする環境は整いました。あとは売買アルゴリズムの初期バージョン完成を待つばかりです。

日々、さしあたってターゲットにした 3 銘柄の株価データを VBA アプリがリアルタイム(1 秒間隔)で収集しています。収集したデータに対してシミュレーション用のプログラムで評価して売買アルゴリズムの開発に励んでいますが、まだまだ完成に辿り着けません。あまりゴールを高くせず、そこそこ勝てるアルゴリズムから始めたいのですが、その目先のゴールすら、まだまだ遠いです。

最近ではさらに Python の xlwings パッケージ [7] で Excel のワークシート上に流し込まれた株価データを読み込んで、あれこれ取り組んでいます。結局、慣れている Python の方がいろいろ試しやすいんですよね。

売買アルゴリズムの開発については、サブブログ [8] にまとめています。

きっと多くの人は OS に注目していない

いろんなことに使える高性能な Windows PC がフツーに売られていて、その一方で PC のソフトウェア売り場がすっかり少なくなってしまった現在、前述した使わないアプリが満載な初期状態の Windows PC は当たり前なのかもしれません。使いたいアプリが Microsoft Store にあればインターネット経由で入手できますしね。

買った Windows PC で Linux を起動できると確認できれば、迷わず Linux を上書きインストールしてしまう自分は、はっきり言って異端です。そして、最新の CPU を搭載した PC を、Linux 環境でぶんぶん稼働させたい派でもあります。そんなわけでメインの PC にはそこそこのスペックのものを買い求めますが、そう頻繁には買い替えができません。

そこで、廉価な PC を見つけると衝動買いをして Linux をインストールして遊ぶことが趣味みたいになっています。こういった PC は古くなっても Linux が動くので、不本意ながら、古くなった PC でも Linux をインストールすればまだまだ使えることを実感しています。しかし、だからと言って、古くなった PC に Linux をインストールすることを推奨することは避けたいものです。可能であれば新しい PC を使った方が OS がなんであれ、より多くのことができるからです。それに Windows に慣れ親しんでいるのであれば、わざわざ異なる操作を必要とする他の OS を使うことは、人によってはストレスにしかならない場合もあるでしょう。

一般的な用途であれば Windows PC で十分、いや、おそらく多くの人は OS を選ぼうなんて考えていないでしょうから、OS なんてなんでもいいじゃん でよいと思うのです。

だからこそ Linux を話題に

逆説的ではありますが、Linux 好きの言い分として Linux はこんなところで利用されている、ということをなるべく具体的に紹介していきたいと考えています。テーマを考えて不定期に公開していきます。

参考サイト

  1. SBI証券と楽天証券、国内株式の取引手数料を無料化 - Impress Watch [2023-08-31]
  2. bitWalk's: CHUWI GemiBook Pro を買いました [2022-06-24]
  3. bitWalk's: 【備忘録】マーケットスピード II の文字化け [2023-11-09]
  4. Amazon.co.jp: Microsoft Excel 2024(最新 永続版)|オンラインコード版|Windows11、10/mac対応|PC2台 : PCソフト
  5. bitWalk's: GMKtec NucBox G2 Plus [2025-02-16]
  6. bitWalk's: Remmina を使ってみる [2022-06-05]
  7. xlwings Documentation
  8. 私の株日記: 自動売買への道

 

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

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



このエントリーをはてなブックマークに追加

2025-05-20

Matplotlib と QChart

Matplotlib は、Python と NumPy のためのプロットライブラリです。Tkinter、wxPython、Qt、GTK のような汎用 GUI ツールキットを使ったアプリケーションにプロットを埋め込むためのオブジェクト指向 API を提供しています。

Wikipedia より引用、翻訳

最近は、何かにつけて Google Gemini(以下、単に Gemini と呼びます)に相談することが多くなり、Python などのコーディングについても相談しています。便利になったものです。

リアルタイムでデータを取得してトレンドチャートにするニーズに対して、PySide6 の QChart で実装しようとして Gemini にあれこれ相談しています。

Matplotlib についても同じようなリアルタイムなトレンドチャートができるか Gemini に聞いてみたところ、あっさりサンプルを示してくれました。確認したところ、厳密にはデータ追加の度に再描画をしているとのことですが、それでもこのやり方を探していたんだと(Matplotlib でリアルタイムにデータ点を追加することに苦戦していただけに)いままでの自分の調査力の拙さにがっかりしてしまいました。

PySide6 に埋め込んだ Matplotlib によるリアルタイムなトレンドチャート (by Google Gemini)

Gemini が出してくれたコードは、本ブログ記事の下の方 qt_matplotlib_rt.py に示しました。

Matplotlib でもできるのであれば、現在 PySide6 の QChart で実装しようとしているトレンドチャートを Matplotlib でやり直そうか…。結構な量のデータをリアルタイムで扱うことから、リソース消費やパフォーマンスを追求する必要があったので、Gemini に頼んで比較してもらいました。

以下が Gemini が出力してくれた「まとめ」の表に色など少し修飾を加えたものです。

PySide6 QChart と 埋め込んだ Matplotlib の比較 (by Google Gemini)
特徴 PySide6 QChart 埋め込んだ Matplotlib
処理速度 高速 (リアルタイムデータ更新に最適化) 比較的低速 (再描画のオーバーヘッド)
リソース効率 有利 (軽量、メモリ使用量少) 不利 (多機能、メモリ使用量多)
リアルタイム性 高い 比較的低い
汎用性 グラフの種類は Matplotlib より限定的 非常に高い (多様なグラフに対応)
カスタマイズ性 ある程度可能 非常に高い (細部までカスタマイズ可能)
統合性 Qt アプリケーションとの親和性が高い 外部ライブラリの埋め込み

Jupyter Lab 上でのチャートは Matplotlib が便利で、多少リソースを食うからと言っても変える気はありませんが、GUI アプリの特定用途向けのチャートでは GUI ライブラリの機能(この場合は QChart)を使った方が良さそうです。

便利なツールは躊躇せずにどんどん試してみるべきですが、Gemini に限らず、生成 AI は便利すぎて、依存度が高くなってしまっています。😅

qt_matplotlib_rt.py (by Google Gemini)

参考サイト

  1. Google Gemini

 

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

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



このエントリーをはてなブックマークに追加

2025-05-15

Red Hat Enterprise Linux 10 のリリース

2025-05-15 公開 / 2025-05-25 更新

Red Hat Enterprise Linux, RHEL は、Red Hat 社が開発しているエンタープライズ市場向けの Linux ディストリビューションです。最近の RHEL のライフサイクルは 10 年で、延長が必要であれば追加サブスクリプション (Extended Lifecycle Support Add-On) も提供されています。

Red Hat Enterprise Linux 10 のデスクトップ画面(Dark スタイル)

参考サイト [1] によると、Red Hat Enterprise Linux 10 が GA(General Availability, 一般公開) になり、

から ISO イメージをダウンロードできるようになったということなので、早速アクセスしてみました。

まだ正式リリース前なのでしょうか、現在 (5/15) のところ、x86_64 のみ公開されているようです。

なお、Red Hat Customer Portal にアクセスする Red Hat account が必要になります(無料で作成できます)。

ダウンロードできるイメージは下記の通りです (v. 10.0 for x86_64) 。

  • Red Hat Enterprise Linux 10.0 Boot ISO
  • Red Hat Enterprise Linux 10.0 Binary DVD
  • Red Hat Enterprise Linux 10.0 KVM Guest Image
  • Red Hat Enterprise Linux 10.0 WSL2 Image
  • Red Hat Enterprise Linux 10.0 Real Time Binary DVD
  • virtio-win 1.9.45 ISO
    • KVM 準仮想化 (virtio) ドライバー

RHEL10 では、x86_64 向けは x86_64-v3 マイクロアーキテクチャを前提としています。Intel のプロセッサであれば Haswell 世代以降の CPU が条件を満たしているそうです。

仮想環境にインストール

上記 ISO イメージのうち Red Hat Enterprise Linux 10.0 Boot ISO (rhel-10.0-x86_64-boot.iso) をダウンロードして、Fedora Linux 42 (Workstation Edition) の GNOME Boxes 上にインストールしてみました。

なお、自分は Red Hat Developer subscription で Red Hat の製品を利用しています。

インストーラは従来通り

インストーラはひょっとすると Anaconda の新しい Web UI が採用されているかもしれないと期待したのですが、Fedora Linux 42 でようやく採用されたばかりなので、RHEL ではさすがに従来通りの Anaconda の UI でした。そもそも RHEL10 ベータ版では従来の Anaconda でしたので、変わるはずもないのですが…。

Red Hat Enterprise Linux 10 のインストール (1)

インストールの詳細は省略します。今回は Firefox もインストールされることを期待して「ワークステーション」でインストールしました。

Red Hat Enterprise Linux 10 のインストール (2)
Red Hat Enterprise Linux 10 のインストール (3)

インストール後、再起動して初めてログインしたときのデスクトップ画面です。

Red Hat Enterprise Linux 10 のデスクトップ画面 (1)
Red Hat Enterprise Linux 10 のデスクトップ画面 (2)

参考サイト

  1. Red Hat Enterprise Linux 10 Reaches GA - Phoronix [2025-05-14]
  2. Red Hat Enterprise Linux 10 starts trickling quietly out • The Register [2025-05-14]
  3. Red Hat Has Unofficially Released RHEL 10 - FOSS Force [2025-05-14]
  4. Already available? RHEL 10 can be downloaded before the announcement | heise online [2025-05-14]
  5. RHEL 10 同梱版主要 OSS のバージョンまとめ | SIOS Tech. Lab [2025-05-14]
  6. Red Hat Summit 2025 Homepage
  7. Red Hat Enterprise Linux 10
  8. 10.0 Release Notes | Red Hat Enterprise Linux | 10 | Red Hat Documentation
  9. 「Red Hat Enterprise Linux 10」リリース、ブート可能コンテナ、CLIで使える生成AIアシスタントなどの新機能 | IT Leaders [2025-05-21]
  10. レッドハット、「Red Hat Enterprise Linux 10」を発表:日経クロステック Active [2025-05-21]
  11. 米Red Hat、「Red Hat Enterprise Linux 10.0」を発表 | Think IT(シンクイット) [2025-05-21]

 

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

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



このエントリーをはてなブックマークに追加