如何在matplitlib中的每一行旁边放置图例

时间:2018-03-05 07:06:24

标签: matplotlib

这是我的情节,你可以看到情节中有超过15行,虽然我在右上角放了一个图例,但我仍然无法轻易区分每一行。

有更好的方法吗?例如,将传奇放在每一行的旁边?我找不到API。任何帮助表示赞赏。

enter image description here

你可以

1 个答案:

答案 0 :(得分:0)

评论确实是你需要的。这篇文章只是为了让解决方案更加明确。

使用注释可以将标签放置在特定位置。即它可以根据曲线最后一点的坐标放置,例如(xlast, ylast)。为了使图更漂亮,水平位置可以增加例如2%将标签放在距离最后一点的一小段距离处(即标签位于(1.02*xlast, ylast))。

在一个小例子中:

import numpy             as np
import matplotlib.pyplot as plt

fig, ax = plt.subplots()


x     = np.linspace(0,1,2)
y     = 1*x
label = '1x'
color = 'b'

ax.plot(x, y, color=color)

ax.annotate(label,
  xy     = (     x[-1], y[-1]),
  xytext = (1.02*x[-1], y[-1]),
  color  = color,
)


x     = np.linspace(0,1,2)
y     = 2*x
label = '2x'
color = 'r'

ax.plot(x, y, color=color)

ax.annotate(label,
  xy     = (     x[-1], y[-1]),
  xytext = (1.02*x[-1], y[-1]),
  color  = color,
)


ax.set_xlim([0,1.2])

ax.set_xlabel('x')
ax.set_ylabel('y')

plt.savefig('so.png')
plt.show()

结果是:

enter image description here