Python
 Computer >> コンピューター >  >> プログラミング >> Python

Matplotlibでキーボード入力を使ってPythonの図(Figure)を閉じる方法

Pythonで表示したMatplotlibの図をキーボード入力で閉じたい場合、plt.pause()メソッドとinput()関数、そしてclose()メソッドを組み合わせることで実現できます。この方法を使えば、ユーザーがEnterキーを押すまで図を表示し続け、任意のタイミングで確実に閉じることが可能です。

手順

  • 図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。
  • numpyを使ってtとyのデータポイントを作成します。
  • figure()メソッドで新しい図を作成するか、既存の図をアクティブにします。
  • plot()メソッドでtとyのデータポイントをプロットします。
  • プロットにタイトルを設定します。
  • draw()メソッドで現在の図を再描画し、画面に反映させます。
  • pause()メソッドで図を一時的に表示状態に保ちます。
  • input()でユーザーのキーボード入力を待ち受け、Enterが押されるまで処理を停止します。
  • close()メソッドで図を閉じます。

コード例

import numpy as np
from matplotlib import pyplot as plt
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
t = np.arange(0.0, 2.0, 0.01)
y = np.exp(-t)
fig = plt.figure()
plt.plot(t, y, lw=5, color='red')
plt.title("$y=e^{-t}$")
plt.draw()
plt.pause(1)
input("<Hit Enter>")
plt.close(fig)

解説

このコードでは、まず指数関数 $y=e^{-t}$ のカーブを赤色の線で描画しています。plt.draw()で図を強制的に描画した後、plt.pause(1)によってイベントループを1秒間回し、図を画面に表示させます。

その後、input("<Hit Enter>")が呼び出されるとプログラムは一時停止し、コンソール上でユーザーがEnterキーを押すまで待機します。この間も図は開いたまま表示され続けます。Enterキーが押されると次のステートメントに進み、plt.close(fig)によって図のウィンドウが閉じられます。

この手法は、スクリプトの実行中にグラフを確認したい場合や、自動的に閉じてしまうのを防ぎたい場合に非常に便利です。なお、Jupyter Notebook環境では動作が異なる場合があるため、ローカル環境での実行を推奨します。

出力結果

Matplotlibでキーボード入力を使ってPythonの図(Figure)を閉じる方法

  1. PythonのMatplotlibでワッフルチャートを作成する方法を解説

    ワッフルチャート(Waffle Chart)は、目標に対する進捗状況を視覚的に表現するのに適した、魅力的なデータ可視化手法です。四角いマスが並ぶ様子がワッフルに似ていることからこの名前が付けられており、構成比や達成率を直感的に伝えられます。Pythonでワッフルチャートを作成するには、pywaffleライブラリを使用します。新しい図を作成する際、または既存の図を有効化する際に、FigureClass=Waffleを指定することで簡単に描画できます。作成手順辞書を使ってPandasのデータフレームを作成します。plt.figure()で新しい図を作成する際に、FigureClass=Waffle

  2. 【Python】Matplotlibのplt.show()ウィンドウを最大化する方法

    概要Matplotlibでグラフを表示すると、デフォルトでは小さなウィンドウが開きます。plt.get_current_fig_manager() と mng.full_screen_toggle() の2つのメソッドを組み合わせることで、plt.show() で表示されるウィンドウを簡単に最大化(全画面表示)できます。手順subplot() メソッドを使い、現在の図にサブプロットを追加します(nrow=1、ncols=1、index=1)。リスト [1, 2, 3] を渡して pie() メソッドを呼び出し、円グラフを作成します。get_current_fig_manager() メソッドで