如何向Matplotlib图例添加颜色代码

时间:2018-04-19 09:40:21

标签: matplotlib

我试图在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']

1 个答案:

答案 0 :(得分:1)

来自documentation

  

处理:艺术家序列,可选

     

要添加到图例中的艺术家列表(线条,面片)。如果您需要完全控制所显示的内容,请将其与标签一起使用   在图例和上面描述的自动机制中没有   足够的。

     

在这种情况下,手柄和标签的长度应该相同。如果不是,则将它们截断为较小的长度。

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()

enter image description here