在图表之外创建一个图例[重复]

Posted

技术标签:

【中文标题】在图表之外创建一个图例[重复]【英文标题】:Create a legend outside of the graph [duplicate] 【发布时间】:2017-10-05 13:09:35 【问题描述】:

在我的一张图表中,我使用了辅助轴。我的代码创建了两个不同的图例,并在我的图表中显示了这些图例。这是我的代码:

fig3 = plt.figure()
ax3 = fig3.add_subplot(111)
ax4 = fig3.add_subplot(111)

ax4 = ax3.twinx()
line6 = ax3.plot(threshold, different_costs, '-r', label = 'Costs   differences', linewidth = 2.0)
line7 = ax4.plot(threshold, costs1, '-b', label = 'Costs of Model 1 (OFF)',    linewidth = 2.0)
line9 = ax4.plot(threshold, costs2, '-y', label = 'Costs of Model 2 (STANDBY)', linewidth = 2.0)

ax3.set_xlabel("Threshold")
ax3.set_ylabel("Costs savings")
ax4.set_ylabel("Total costs")

plt.suptitle("Costs savings of using MODEL 1")
plt.legend()

plt.show()

如何创建一个带有三个标签的图例?我怎样才能在我的图表之外显示这个图例?

【问题讨论】:

请看我对您问题的回答。让我知道它是否有效:) 有效!但是现在我无法阅读最后一个标签(模型 2 的成本(待机))......你知道我该如何解决这个问题吗? 您可能需要尝试在bbox 中使用不同的数字以适应所有文本。如果答案解决了您的问题,请不要忘记点赞并接受。 如何投票并接受答案? 如果答案解决了您的问题,您可以通过以下***.com/help/someone-answers 和meta.stackexchange.com/questions/5234/… 投票和接受 【参考方案1】:

在这部分代码下:

line6 = ax3.plot(threshold, different_costs, '-r', label = 'Costs   differences', linewidth = 2.0)
line7 = ax4.plot(threshold, costs1, '-b', label = 'Costs of Model 1 (OFF)',    linewidth = 2.0)
line9 = ax4.plot(threshold, costs2, '-y', label = 'Costs of Model 2 (STANDBY)', linewidth = 2.0)

要将所有线条都放在同一个图例上,请编写:

lns = line6 + line7 + line9
labels = [l.get_label() for l in lns]
plt.legend(lns, labels)

要让你的传说脱离剧情,请参考这个答案How to put the legend out of the plot,你可以写:

plt.legend(lns, labels, loc='upper right', bbox_to_anchor=(0.5, -0.05))

对于一些示例数据:

fig3 = plt.figure()
ax3 = fig3.add_subplot(111)
ax4 = fig3.add_subplot(111)

ax4 = ax3.twinx()
line6 = ax3.plot(range(0,10), range(0,10), '-r', label = 'Costs   differences', linewidth = 2.0)
line7 = ax4.plot(range(10,15), range(10,15), '-b', label = 'Costs of Model 1 (OFF)',    linewidth = 2.0)
line9 = ax4.plot(range(0,5), range(0,5), '-y', label = 'Costs of Model 2 (STANDBY)', linewidth = 2.0)

ax3.set_xlabel("Threshold")
ax3.set_ylabel("Costs savings")
ax4.set_ylabel("Total costs")

plt.suptitle("Costs savings of using MODEL 1")

lns = line6 + line7 + line9
labels = [l.get_label() for l in lns]
plt.legend(lns, labels, loc='upper right', bbox_to_anchor=(0.5, -0.05))

plt.show()

【讨论】:

以上是关于在图表之外创建一个图例[重复]的主要内容,如果未能解决你的问题,请参考以下文章

切换图例顺序 [重复]

Highcharts Donutchart:避免使用嵌套图表显示重复的图例

Highcharts - 图表外的图例定位

Ggplot2 - 我无法插入图表图例[重复]

图外的 JQPlot 图例

如何向 ASP.NET 3.5 图表控件添加图例?