首页 > 解决方案 > 在图例中将两个 matplotlib 标记合二为一

问题描述

为了有一个自定义标记,我制作了两个具有相同数据点但标记不同的散点图。因此,通过在另一个标记上绘制一个标记,我得到了一个新的自定义标记的外观。现在我想在传说中使用它。有没有一种方法可以在图例中使用两个标记,一个在另一个之上,并将它们显示为一个标记。

编辑:问题不在于如何为两个不同的标记共享相同的标签,而是如何在图例中将一个标记绘制在另一个标记之上

标签: pythonmatplotlibplotlegend

解决方案


使用标记元组回答了这个问题;


    from numpy.random import randn
    m=np.random.uniform(size=10)
    x=np.arange(0,10,1)
    y=x**2
    fig, ax = plt.subplots(1,1)
    
    blue_dot = ax.scatter(x[:5],y[:5], s=m*100, color='b')

    red_dot = ax.scatter(x[5:],y[5:], s=200*m, color='r')
    black_cross = ax.scatter(x[5:],y[5:], s=400*m, marker='+', color='k')
    
    lgnd = ax.legend([blue_dot, (red_dot, black_cross)], ["Blue Circle", "Red Circle and Black Cross"])

在此处输入图像描述

现在我想改变图例中标记的大小,使所有标记的大小相等。为此,我尝试将其添加到上面的代码中。

lgnd.legendHandles[0]._sizes = [200]
lgnd.legendHandles[1]._sizes = [200] # this is affecting the size of red_dot only

在此处输入图像描述

如何在图例中更改 black_cross 的大小?


推荐阅读