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()

にほんブログ村 その他趣味ブログ 電子工作へにほんブログ村 バイクブログ バイクライフへにほんブログ村 科学ブログ 科学ライフへブログランキング・にほんブログ村へクリックお願いします

  • X

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です