Cor*_*yer 0 python matplotlib pandas
我正在通过pandas绘制界面通过第二个y轴绘制pandas数据框,如文档中所述:
df = pd.DataFrame(np.random.randn(24*3, 3),
index=pd.date_range('1/1/2019', periods=24*3, freq='h'))
df.columns = ['A (left)', 'B (right)', 'C (right)']
ax = df.plot(secondary_y=['B (right)', 'C (right)'], mark_right=False)
ax.set_ylabel('A scale')
ax.right_ax.set_ylabel('BC scale')
ax.legend(loc='upper right')
plt.show()
Run Code Online (Sandbox Code Playgroud)
产生
可以看出,当我使用设置位置时,图例会丢失条目ax.legend(loc='upper right')。
有谁知道我如何设置图例位置并保留所有条目?
提前致谢!
我们可以使用.get_legend_handles_labels()更正确的解决方案:
np.random.seed(42)
df = pd.DataFrame(np.random.randn(24*3, 3),
index=pd.date_range('1/1/2019', periods=24*3, freq='h'))
df.columns = ['A (left)', 'B (right)', 'C (right)']
ax = df.plot(secondary_y=['B (right)', 'C (right)'], mark_right=False)
ax.set_ylabel('A scale')
ax.right_ax.set_ylabel('BC scale')
h1, l1 = ax.get_legend_handles_labels()
h2, l2 = ax.right_ax.get_legend_handles_labels()
ax.legend(h1+h2, l1+l2, loc=1)
Run Code Online (Sandbox Code Playgroud)
我们需要使用该方法的原因是因为ax和ax.right_ax每个人都有自己的传说,只是将它们设置为相同的位置将使其在彼此的顶部。
| 归档时间: |
|
| 查看次数: |
607 次 |
| 最近记录: |