【问题标题】:How do I change the size of the scatter markers in the legend?如何更改图例中散点标记的大小?
【发布时间】:2018-04-17 08:55:40
【问题描述】:

我基本上是用 matplotlib 绘制散点图,但是,我将每个点改变了一个半径。

当我使用plt.legend() 来展示我的传奇时,它看起来像这样......

有没有减小圆圈大小的命令。我知道这可能是一个非常微不足道的问题,我已经尝试过搜索它!

【问题讨论】:

    标签: python matplotlib graph legend scatter


    【解决方案1】:

    您是否按照here 的描述尝试过?

    params = {'legend.linewidth': 2}
    plot.rcParams.update(params)
    

    【讨论】:

    • legend.linewidth 不作为 rcParam 存在。
    【解决方案2】:

    解决方案可能取决于图例中的标记是否应与原始大小相比进行缩放,或者是否需要独立于原始大小的恒定标记大小。

    A.缩放标记

    您可以使用legend.markerscale rcParam

    plt.rcParams["legend.markerscale"] = 0.3
    

    或图例的 markerscale 参数。

    plt.legend(markerscale=0.3)
    

    来自legend documentation

    markerscale : None 或 int 或 float

    图例标记与最初绘制的标记相比的相对大小。默认值为 None,它将从 legend.markerscale rcParam 中获取值。

    例子:

    import matplotlib.pyplot as plt
    plt.rcParams["legend.markerscale"] = 0.3
    
    plt.scatter([.3,.5], [.3,.6], s=1000, label="label")
    plt.scatter([.7,.4], [.3,.6], s=81, marker="^", label="label2")
    plt.legend()
    plt.show()
    

    请注意,这将同时缩放所有标记。

    B.设置一个恒定的标记大小

    如果您希望图例中的标记大小保持不变,而与散点的实际大小无关,则解决方案会稍微复杂一些。您可以使用图例的handler_map 将所需的标记大小设置为图例句柄。

    import matplotlib.pyplot as plt
    from matplotlib.legend_handler import HandlerPathCollection
    
    sc = plt.scatter([.3,.5], [.3,.6], s=1000, label="label")
    plt.scatter([.7,.4], [.3,.6], s=[100,300], marker="^", label="label2")
    
    marker_size = 36
    def update_prop(handle, orig):
        handle.update_from(orig)
        handle.set_sizes([marker_size])
    
    plt.legend(handler_map={type(sc): HandlerPathCollection(update_func=update_prop)})
    plt.show()
    

    【讨论】:

    • 我用图例中的恒定标记大小的解决方案更新了答案。
    【解决方案3】:

    这对我有用:

    # Legend
    handles, labels = ax.get_legend_handles_labels()
    lgd = ax.legend(handles, labels, framealpha=1, ncol=1, 
                bbox_to_anchor=(1.02,1), loc=2, fontsize=8, borderaxespad=0.)
    
    for legend_handle in lgd.legendHandles:
        legend_handle.set_sizes([50])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-18
      • 1970-01-01
      • 2013-01-27
      • 2015-07-12
      相关资源
      最近更新 更多