1. ホーム
  2. python

[解決済み] PANDASプロットの複数のY軸

2023-06-25 10:49:28

質問

私はpandasが第二のY軸をサポートしていることを知っていますが、私は誰かがプロットに第三のY軸を置く方法を知っているかどうか知りたいと思います...現在私はnumpy+pyplotでこれを達成しています...しかし、それは大きなデータセットで遅くなっています。

これは、簡単に比較するために、同じグラフ上に異なる単位で異なる測定値をプロットすることです(例:相対湿度/温度/および電気伝導度)。

で可能かどうかを知っている人がいたら教えてください。 pandas で可能かどうかを知っている人がいたら教えてください。

[編集] これを行う方法(あまり多くのオーバーヘッドなしで)があるかどうか疑問ですが、私は間違っていることが証明されることを望みます、これはmatplotlibの制限かもしれません...

どのように解決するのですか?

これはうまくいくかもしれませんね。

import matplotlib.pyplot as plt
import numpy as np
from pandas import DataFrame
df = DataFrame(np.random.randn(5, 3), columns=['A', 'B', 'C'])

fig, ax = plt.subplots()
ax3 = ax.twinx()
rspine = ax3.spines['right']
rspine.set_position(('axes', 1.15))
ax3.set_frame_on(True)
ax3.patch.set_visible(False)
fig.subplots_adjust(right=0.7)

df.A.plot(ax=ax, style='b-')
# same ax as above since it's automatically added on the right
df.B.plot(ax=ax, style='r-', secondary_y=True)
df.C.plot(ax=ax3, style='g-')

# add legend --> take advantage of pandas providing us access
# to the line associated with the right part of the axis
ax3.legend([ax.get_lines()[0], ax.right_ax.get_lines()[0], ax3.get_lines()[0]],\
           ['A','B','C'], bbox_to_anchor=(1.5, 0.5))

出力します。