我试图在matplotlib雷达/极坐标图中添加一个图例。我是matplotlib的新手,请原谅我们的代码。我也希望这很简单,但我已经花了一个小时而且无处可去。
我有以下内容在左下角生成标签列表,但每当我尝试添加句柄以给出代表标签的颜色时,我就会失去图例。
# Set color of axes
plt.rc('axes', linewidth=0.5, edgecolor="#888888")
# Create polar plot
ax = plt.subplot(111, polar=True)
# Set clockwise rotation. That is:
ax.set_theta_offset(pi / 2)
ax.set_theta_direction(-1)
# Set position of y-labels
ax.set_rlabel_position(0)
# Set color and linestyle of grid
ax.xaxis.grid(True, color="#888888", linestyle='solid', linewidth=0.5)
ax.yaxis.grid(True, color="#888888", linestyle='solid', linewidth=0.5)
# Plot data
ax.plot(x_as, values, linewidth=0, linestyle='solid', zorder=3)
# Fill area
ax.fill(x_as, values, 'r', alpha=0.3)
plt.legend(labels=[self.get_object().name], loc=(-.42,-.13))
if not self.get_object().subscription is None:
if self.get_object().subscription.benchmark:
bx = plt.subplot(111, polar=True)
bx.plot(x_as, baseline, linewidth=0, linestyle='solid', zorder=3)
bx.fill(x_as, baseline, 'b', alpha=0.3)
plt.legend(labels=[self.get_object().name, 'Benchmark'], loc=(-.42,-.13))
我相信我需要
plt.lengend(handles=[some list], labels=[self.get_object().name, 'Benchmark'], loc=(-.42,-.13))
我不明白handles
的列表应该是什么,我已尝试了很多内容,包括[ax, bx]
,[ax.plt(), bx.plt()]
,['r', 'b']
答案 0 :(得分:1)
处理:艺术家序列,可选
要添加到图例中的艺术家列表(线条,面片)。如果您需要完全控制所显示的内容,请将其与标签一起使用 在图例和上面描述的自动机制中没有 足够的。
在这种情况下,手柄和标签的长度应该相同。如果不是,则将它们截断为较小的长度。
plt.plot
返回一个line2D对象列表,这是您需要传递给plt.legend()
的对象。因此,简化的例子如下:
labels = ["Line 1", "Line 2"]
lines1, = plt.plot([1,2,3])
lines2, = plt.plot([3,2,1])
handles = [lines1, lines2]
plt.legend(handles, labels)
plt.show()