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

Matplotlibで棒グラフ(バーチャート)を動的に更新する方法

Matplotlibでは、FuncAnimationクラスを利用することで、棒グラフの高さや色をリアルタイムに更新し、アニメーションとして表示できます。ここでは、その具体的な手順とサンプルコードを紹介します。

棒グラフを動的に更新する手順

  • 図(figure)のサイズを設定し、サブプロット間および周囲のパディングを調整します。
  • 新しい図を作成するか、既存の図をアクティブにします。
  • データポイントと色のリストを用意します。
  • bar()メソッドを使って、データと色をもとに棒グラフを描画します。
  • FuncAnimation()クラスを使用し、各バーの高さ(height)と塗りつぶし色(facecolor)を設定する関数animateを繰り返し呼び出すことで、アニメーションを生成します。
  • show()メソッドを実行して、図を画面に表示します。

サンプルコード

import numpy as np
from matplotlib import animation as animation, pyplot as plt, cm

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

fig = plt.figure()

data = [1, 4, 3, 2, 6, 7, 3]
colors = ['red', 'yellow', 'blue', 'green', 'black']
bars = plt.bar(data, data, facecolor='green', alpha=0.75)

def animate(frame):
    global bars
    index = np.random.randint(1, 7)
    bars[frame].set_height(index)
    bars[frame].set_facecolor(colors[np.random.randint(0, len(colors))])

ani = animation.FuncAnimation(fig, animate, frames=len(data))

plt.show()

コードの解説

このサンプルでは、7つのデータポイントを持つ棒グラフを作成しています。animate関数はフレームごとに呼び出され、np.random.randintで生成したランダムな値を該当フレームのバーの高さとして設定します。同時に、色のリストからランダムに選んだ色をバーの塗りつぶし色として適用するため、実行するたびに異なる動的なグラフが描画されます。

frames=len(data)を指定することで、データ数と同じ回数だけアニメーションが更新されます。なお、Jupyter Notebook上でアニメーションを表示したい場合は、%matplotlib notebookマジックコマンドを使用するか、HTMLへの埋め込みを行うとスムーズです。

出力結果

上記のコードを実行すると、各バーの高さと色が順番に変化していくアニメーションが表示されます。

  1. Matplotlibで3Dバー(3D棒グラフ)に凡例を追加する方法

    Matplotlibで3D棒グラフ(3Dバー)に凡例を追加したい場合、bar3d()メソッドでバーを描画し、legend()メソッドを使って凡例を配置します。この記事では、緑と赤の2種類の3Dバーを描画し、それぞれに凡例ラベルを付ける具体的な手順をサンプルコード付きで解説します。 実装の手順 図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。 figure()メソッドで新しい図を作成します。 add_subplot()で projection=3d を指定し、3D描画用のAxesを追加します。 numpyを使って x3、y3、z3、dx、dy、dz の各データリス

  2. Matplotlibで3Dプロットのアスペクト比を設定する方法

    Matplotlibで3Dプロットのアスペクト比を設定するには、set_aspect()メソッドを使用します。ここでは、曲面プロット(サーフェスプロット)を例に、具体的な手順とサンプルコードを解説します。 3Dプロットのアスペクト比を設定する手順 以下の手順に従って実装します。 figure()メソッドで新しい図を作成するか、既存の図をアクティブにします。 projection=3d を指定して現在のAxes(座標軸)を取得します。存在しない場合は自動的に作成されます。 numpyを使ってデータ点 R、Y、z を生成します。 R、Y、zをもとにサーフェスプロット(曲面図)を作成します。 s