前回の記事では、matplotlibでの折れ線グラフのプロット画像のラベルや属性を変更しました。
今回は、折れ線グラフのリアルタイムプロットでラベルやカラーなどの属性を変えるコードを実装をしました。
import numpy as np import matplotlib.pyplot as plt length = 100 x = np.arange(0, length) y = np.array([ np.random.normal(0, 5.0, length), np.random.normal(0, 1.0, length), np.random.normal(0, 3.0, length), ]) colors = ['r', 'g', 'b'] labels = ["", "", ""] markers = ["o", "x", "*"] alphas = [0.25, 0.5, 0.75] plt.ion() fig = plt.figure(figsize=(5,5)) ax = fig.add_subplot(111) ax.set_prop_cycle(color=colors, marker=markers, alpha=alphas) lines = ax.plot(x, y.T, "-*") plt.legend(lines, labels, loc='upper right') plt.ylim(-10, 10) plt.grid() plt.show() from collections import deque colors = deque(colors) for n in range(0, 50): y = np.array([ np.random.normal(0, 5.0, length), np.random.normal(0, 1.0, length), np.random.normal(0, 3.0, length), ]) labels = [f'plot{n}_no_1', f'plot{n}_no_2', f'plot{n}_no_3'] colors.rotate(1) for k in range(0,len(lines)): lines[k].set_ydata(y[k,:]) lines[k].set_color(colors[k]) lines[k].set_marker(markers[k]) plt.legend(lines, labels, loc='upper right') plt.pause(0.1)
matplotlib でのリアルタイムプロット方法の基本に関しては、以下の記事を参照してください。
リアルタイムプロットでlines[k].set_ydata()
を使う方法の場合、属性はlines[k].set_xxxx()
を利用することになります。
属性については、前回の記事と同様で plt.legend(lines, labels)
で変更することができます。
これを使うことで、リアルタイムプロットで特定の条件の時のみ折れ線グラフの色などの属性を変えることもできます。
以下の例では、リアルタイムでPCマイク録音し、RMS計算後にRMSが一定の値以上かどうかで折れ線グラフの色を変化させています。
リアルタイムでPCマイク録音→RMS計算→プロットのテスト pic.twitter.com/LBWBBCVoi0
— Kurene (@_kurene) 2021年5月31日