tkplot_tkinter.py ライブラリ ドキュメント

ライブラリの機能や目的

tkplot_tkinter.py は、Pythonの強力なグラフ描画ライブラリである Matplotlib で作成された図を、Tkinter ベースのグラフィカルユーザーインターフェース (GUI) アプリケーションに埋め込むためのユーティリティを提供します。このライブラリの主な目的は、Matplotlib のプロット機能を Tkinter ウィンドウ内で利用しやすくし、インタラクティブなデータ可視化アプリケーションの開発を支援することです。

主な機能は以下の通りです。

  • Matplotlib の Figure オブジェクトを Tkinter キャンバスに簡単に埋め込みます。

  • Matplotlib の標準ナビゲーションツールバーを Tkinter ウィンドウに追加します。

  • Tkinter ベースのカスタムツールバーやボタンを Matplotlib のプロットと連携して追加できます。

  • Matplotlib の一般的なプロット操作(例:subplotslegendtight_layout)を tkPlot_tkinter クラスのメソッドとしてラップし、簡潔なAPIで利用できるようにします。

  • Tkinter ウィンドウと Matplotlib キャンバスの更新を管理し、動的なプロット表示を可能にします。

これにより、科学技術計算やデータ分析アプリケーションにおいて、柔軟で応答性の高いグラフ表示機能を実現することが可能になります。

importする方法

このライブラリを他のPythonプログラムから利用するには、以下の方法で tkPlot_tkinter クラスをインポートします。

from tkplot_tkinter import tkPlot_tkinter

必要な非標準ライブラリとインストール方法

tkplot_tkinter.py は以下の非標準ライブラリに依存しています。これらのライブラリは pip を使用してインストールできます。

  • numpy: 数値計算を行うための基盤ライブラリ。

    pip install numpy
    
  • matplotlib: グラフ描画を行うための主要ライブラリ。

    pip install matplotlib
    
  • mplcursors: Matplotlib のプロットにインタラクティブなデータカーソル機能を追加するライブラリ。

    pip install mplcursors
    
  • tklib: tkplot_tkinter.py が内部で利用しているカスタムライブラリです。tkplot_tkinter.py と同じ開発者によって提供されるか、同じプロジェクト構造内に配置されていることが想定されます。もし公開されている場合は pip でインストール可能ですが、そうでない場合はプロジェクトの指示に従って適切な方法で導入してください。

Tkinter はPythonの標準ライブラリに含まれているため、別途インストールする必要はありません。

importできる変数と関数

tkplot_tkinter.py から主にインポートして利用するのは tkPlot_tkinter クラスです。

クラス: tkPlot_tkinter(tkObject)

Matplotlib のプロットを Tkinter アプリケーションに埋め込むためのラッパークラスです。tklib.tkobject.tkObject を継承しています。

コンストラクタ

  • __init__(self, plt, parent=None, title=None) tkPlot_tkinter オブジェクトを初期化します。

    • 引数:

      • plt: Matplotlib の pyplot モジュール、または類似のAPIを持つオブジェクト。プロット操作の基盤として使用されます。

      • parent (オプション): Tkinter の親ウィジェット。指定されない場合は新しい tk.Tk() ルートウィンドウが作成されます。

      • title (オプション): Tkinter ウィンドウのタイトルバーに表示される文字列。

    • 戻り値: なし

メソッド

  • create_window(self, fig) ウィンドウを作成し、ツールバーを追加します。現在、引数 fig は使用されていません。

    • 引数:

      • fig: 現在未使用。

    • 戻り値: なし

  • update(self) Matplotlib キャンバスと Tkinter 親ウィジェットを更新します。これにより、プロットやUIの変更が画面に反映されます。

    • 引数: なし

    • 戻り値: なし

  • show(self) update() メソッドのエイリアスです。プロットを表示(更新)します。

    • 引数: なし

    • 戻り値: なし

  • pause(self, t) Tkinter ウィンドウを更新し、指定された時間だけMatplotlibの pause 機能を使ってプログラムの実行を一時停止します。アニメーションなどの作成に有用です。

    • 引数:

      • t: 一時停止する時間(秒)。

    • 戻り値: なし

  • draw(self) update() メソッドのエイリアスです。キャンバスを描画(更新)します。

    • 引数: なし

    • 戻り値: なし

  • get_current_fig_manager(self) Matplotlib の plt.get_current_fig_manager() をラップし、現在のフィギュアマネージャーを返します。

    • 引数: なし

    • 戻り値: Matplotlib の現在のフィギュアマネージャーオブジェクト。

  • tight_layout(self, **kwargs) Matplotlib の plt.tight_layout() をラップし、サブプロットのレイアウトを自動調整します。

    • 引数: plt.tight_layout() に渡すキーワード引数。

    • 戻り値: なし

  • subplots_adjust(self, **kwargs) Matplotlib の plt.subplots_adjust() をラップし、サブプロットの配置を調整します。

    • 引数: plt.subplots_adjust() に渡すキーワード引数。

    • 戻り値: なし

  • axes(self, *args, **kwargs) Matplotlib の plt.axes() をラップし、新しい軸オブジェクトを作成または取得します。

    • 引数: plt.axes() に渡す位置引数およびキーワード引数。

    • 戻り値: Matplotlib の Axes オブジェクト。

  • subplots(self, ny, nx, figsize=(8, 6), dpi=100, tight_layout=True, **kwargs) Matplotlib の plt.subplots() に似た機能を提供し、新しいフィギュアと複数のサブプロット軸を作成します。

    • 引数:

      • ny: 行数。

      • nx: 列数。

      • figsize (オプション): フィギュアのサイズをタプル (幅, 高さ) で指定(インチ単位)。デフォルトは (8, 6)

      • dpi (オプション): フィギュアのDPI (dots per inch)。デフォルトは 100

      • tight_layout (オプション): True の場合、fig.set_constrained_layout(True) を呼び出し、密なレイアウトを有効にします。デフォルトは True

      • **kwargs: fig.add_subplot() に渡す追加のキーワード引数。

    • 戻り値:

      • fig: 作成された Matplotlib の Figure オブジェクト。

      • plot_axes: 作成された Axes オブジェクトのリスト。

  • legend(self, ax, line_inf_list=None, draggable=True, **kwargs) 指定された軸に凡例を追加します。凡例をドラッグ可能にすることもできます。

    • 引数:

      • ax: 凡例を追加する Matplotlib の Axes オブジェクト。

      • line_inf_list (オプション): 凡例に表示するラインオブジェクトのリスト。指定しない場合は ax.legend() のデフォルト動作に従います。

      • draggable (オプション): True の場合、凡例をマウスでドラッグ可能にします。デフォルトは True

      • **kwargs: ax.legend() に渡す追加のキーワード引数。

    • 戻り値: 作成された Matplotlib の Legend オブジェクト。

  • add_toolbar(self) Tkinter のフレームとして独自のツールバーを親ウィンドウの上部に追加します。

    • 引数: なし

    • 戻り値: なし

  • add_toolbar_button(self, text, command=None) add_toolbar() で作成されたカスタムツールバーにボタンを追加します。

    • 引数:

      • text: ボタンに表示するテキスト。

      • command (オプション): ボタンがクリックされたときに実行される関数。

    • 戻り値: 作成された Tkinter の Button オブジェクト。

  • add_canvas(self, fig=None, parent=None) Matplotlib のフィギュアを指定された親ウィジェット内のTkinterキャンバスに埋め込みます。また、標準のMatplotlibナビゲーションツールバーも追加します。

    • 引数:

      • fig (オプション): 埋め込む Matplotlib の Figure オブジェクト。指定しない場合は、subplots() で作成された self.fig が使用されます。

      • parent (オプション): キャンバスを配置する Tkinter の親ウィジェット。指定しない場合は、コンストラクタで設定された self.parent が使用されます。

    • 戻り値: 作成された FigureCanvasTkAgg オブジェクト。

main scriptとして実行したときの動作

このライブラリファイル tkplot_tkinter.py は、if __name__ == "__main__": ブロックを持たないため、単独で実行された場合に特定のデモンストレーションやテストコードは実行されません。通常は他のPythonスクリプトから tkPlot_tkinter クラスをインポートして使用することを想定しています。