gpt4 book ai didi

python - Matplotlib:使用 twinx 时在图例上绘制数据

转载 作者:行者123 更新时间:2023-11-28 22:45:02 25 4
gpt4 key购买 nike

我正在尝试使用 Python 和 Matplotlib 绘制大量不同的数据集。我正在使用 twinx 在主轴上绘制一个数据集,在次轴上绘制另一个数据集。我想为这些数据集提供两个单独的图例。

在我当前的解决方案中,次轴的数据绘制在主轴图例的顶部,而主轴的数据未绘制在次轴图例上。

我已经根据此处的示例生成了一个简化版本:http://matplotlib.org/users/legend_guide.html

这是我目前所拥有的:

import matplotlib.pyplot as plt
import pylab

fig, ax1 = plt.subplots()
fig.set_size_inches(18/1.5, 10/1.5)
ax2 = ax1.twinx()

ax1.plot([1,2,3], label="Line 1", linestyle='--')
ax2.plot([3,2,1], label="Line 2", linewidth=4)

ax1.legend(loc=2, borderaxespad=1.)
ax2.legend(loc=1, borderaxespad=1.)

pylab.savefig('test.png',bbox_inches='tight', dpi=300, facecolor='w', edgecolor='k')

结果如下图: Figure

如图所示,ax2 中的数据绘制在 ax1 图例上,我希望图例位于数据上方。我在这里错过了什么?

感谢您的帮助。

最佳答案

您可以用这些替换图例设置行:

ax1.legend(loc=1, borderaxespad=1.).set_zorder(2)
ax2.legend(loc=2, borderaxespad=1.).set_zorder(2)

它应该可以解决问题。

请注意,位置已更改以对应于线条,并且在定义图例后应用了 .set_zorder() 方法。

zorder 中较高的整数将绘制在“更高”层上。 enter image description here

关于python - Matplotlib:使用 twinx 时在图例上绘制数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29010078/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com