matplotlibの備忘録2
前回の「matplotlibの備忘録」の続きです。
グラフのタイトル 軸のラベル
データをリストで与えて表示するグラフです。グラフのタイトル 軸のラベルを表示してみました。
import matplotlib.pyplot as plt import japanize_matplotlib temperature = [5.5,8.3,12.5,15.9,19.0,23.5] time_hour = [5,6,7,8,9,10] # グラフを書く plt.plot(time_hour, temperature) # グラフのタイトル plt.title("気温の変化") # x軸のラベル plt.xlabel("時刻") # y軸のラベル plt.ylabel("気温") # 表示する plt.show()
グラフのグリッド
グラフのグリッドを表示しました。
import matplotlib.pyplot as plt import japanize_matplotlib temperature = [5.5,8.3,12.5,15.9,19.0,23.5] time_hour = [5,6,7,8,9,10] # グラフを書く plt.plot(time_hour, temperature,marker="X") # グラフのタイトル plt.title("気温の変化") # x軸のラベル plt.xlabel("時刻") # y軸のラベル plt.ylabel("気温") # グリッドを表示する plt.grid(True) # 表示する plt.show()
複数のグラフを表示する
複数のグラフを描画するときは以下のようにします。4つのグラフを生成しています。plt.subplot()の引数は(行, 列, 何番目か)となっており、上の例では2行2列のデータを生成し、順番にグラフを描いています。グラフのラベル、グラフのタイトル(グラフの下に表示しました)、グリッドの色と線を破線にしています。
import matplotlib.pyplot as plt import numpy as np #import japanize_matplotlib plt.subplot(221) x_1 = np.linspace(0, np.pi*2, 10000) y_1 = np.sin(x_1) plt.plot(x_1, y_1, label="sin") plt.legend() plt.title("sin", loc='center', y=-0.23) plt.grid(color='gray', linestyle='--') plt.subplot(222) x_2 = np.linspace(0, np.pi*2, 10000) y_2 = np.cos(x_2) plt.plot(x_2, y_2, label="cos") plt.legend() plt.title("cos", loc='center', y=-0.23) plt.grid(color='gray', linestyle='--') plt.subplot(223) x_3 = np.linspace(0, np.pi*2, 10000) y_3 = np.sin(x_3)-np.cos(x_3) plt.plot(x_3, y_3, label="sin-cos") plt.legend() plt.title("sin-cos", loc='center', y=-0.23) plt.grid(color='gray', linestyle='--') plt.subplot(224) x_4 = np.linspace(0, np.pi*2, 10000) y_4 = np.sin(x_4)+np.cos(x_4) plt.plot(x_4, y_4, label="sin+cos") plt.legend() plt.title("sin+cos", loc='center', y=-0.23) plt.grid(color='gray', linestyle='--') plt.show()
グラフをリアルタイム表示(グラフを動かす)
plt.show()ではなくplt.pause()を使うのがポイントです。
import matplotlib.pyplot as plt import numpy as np # 描画領域 plt.subplots(1, 1) # y軸方向の描画幅を指定 plt.ylim((-1.1, 1.1)) # x軸:時刻 x = np.arange(0, 500, 1) # 周波数を高くしていく for Hz in np.arange(0.1, 10.1, 0.01): # sin波を取得 y = np.sin(2.0 * np.pi * (x * Hz) / 100) # グラフを描画する line, = plt.plot(x, y, color='blue') # 次の描画まで0.01秒待つ plt.pause(0.01) # グラフをクリア line.remove()