tkplot_tkinter.py ライブラリ ドキュメント
ライブラリの機能や目的
tkplot_tkinter.py は、Pythonの強力なグラフ描画ライブラリである Matplotlib で作成された図を、Tkinter ベースのグラフィカルユーザーインターフェース (GUI) アプリケーションに埋め込むためのユーティリティを提供します。このライブラリの主な目的は、Matplotlib のプロット機能を Tkinter ウィンドウ内で利用しやすくし、インタラクティブなデータ可視化アプリケーションの開発を支援することです。
主な機能は以下の通りです。
Matplotlib の
Figureオブジェクトを Tkinter キャンバスに簡単に埋め込みます。Matplotlib の標準ナビゲーションツールバーを Tkinter ウィンドウに追加します。
Tkinter ベースのカスタムツールバーやボタンを Matplotlib のプロットと連携して追加できます。
Matplotlib の一般的なプロット操作(例:
subplots、legend、tight_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 クラスをインポートして使用することを想定しています。