20160428

matplotlibで、二軸グラフ

http://matplotlib.org/examples/api/two_scales.htmlを参考にして書く。

リファレンスの例では、プロットの色と、軸の色を対応させている。
レジェンド(凡例)無しでも、二軸のどちらに、プロットの所属があるかが直感的に判る。

こちらは、とりあえず二軸のコマンドを事務的に試す。

import numpy as np
import matplotlib.pyplot as plt

fig, ax1 = plt.subplots()
ax2 = ax1.twinx()

t = np.linspace(0, 1, 1001)
y1 = t
y2 = 10 * np.sin(np.linspace(0, 2*np.pi, 1001))

ax1.plot(t, y1, 'b-')
ax2.plot(t, y2, 'r')

plt.show()

埋め込み画像 2

ただ、これだとyだけ二軸。
xは共通。

xもyも別の軸にしたいのであれば、どうしたらいいのか...
stackoverflowにちゃんとあった。

http://stackoverflow.com/questions/12358890/matplotlib-using-twinx-and-twiny-together-like-twinxy

結論だけ先に書くと、
ax.twinx().twiny()

コードは

import numpy as np
import matplotlib.pyplot as plt

fig, ax1 = plt.subplots()
ax2 = ax1.twinx().twiny()

t1 = np.linspace(0, 1, 1001)
y1 = t1

t2 = t1*100
y2 = 10 * np.sin(np.linspace(0, 2*np.pi, 1001))

ax1.plot(t1, y1, 'b-')
ax2.plot(t2, y2, 'r')

plt.show()


埋め込み画像 1

上にも新たにx軸が出現し、晴れて二軸が表示された。

posted by yuchan at 06:37 | Comment(1) | python