Python:如何在 twinx 之后制作图例

标签 python matlab matplotlib

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

ax1.plot(x,y1,'go-')
ax1.plot(x,y2,'ro-')
ax1.plot(x,y3,'g*--')
ax1.plot(x,y4,'r*--')
ax2.plot(x,y5,'bo-')
ax2.plot(x,y6,'b*--')

ax1.set_xlabel('cluster size')
ax1.set_ylabel('number of nodes', color='g')
ax2.set_ylabel('error rate', color='b')

我想像上面那样绘制 6 条曲线。有两个Y轴。 我不知道如何为这 6 条曲线制作图例。 我想要得到的是这样的

legend([y1,y2,y3,y4],['A','B','C','D'])
legend([y5,Y6],['e','f'])

最佳答案

您可以为您拥有的每个 plot() 语句使用一个标签。例如:

ax1.plot(x,y1,'go-', label='A')
ax1.plot(x,y2,'ro-', label='B')
ax1.plot(x,y3,'g*--', label='C')
ax1.plot(x,y4,'r*--', label='D')

然后,调用

ax1.legend()

将自动创建您想要的图例,因为调用不带参数的 legend() 会自动获取处理程序及其各自的标签。

如果您想要单独的图例,您还可以通过 loc 参数为它们指定不同的位置。检查guide了解更多详情。

关于Python:如何在 twinx 之后制作图例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28075365/

相关文章:

algorithm - 寻找径向线段的最近邻居

python - 当有人加入时创建规则协议(protocol)

python - 为什么我的程序使用系统 cpu 时间?

python - 如何将文字样式应用于 Richtext 对象? (docxtpl 库)

python - 使用 configobj 来逐一读取完整的部分

image - 删除matlab子图中的间距

.net - 如何使 MCR 启动时间快

python - matplotlib:组合不同的图形并将它们放在一个子图中,共享一个共同的图例

Python动画图形窗口无法自动关闭

python - 如何使用 matplotlib 以指数方式缩放 Y 轴