【问题标题】:I need to make my scatter plot legend dots bigger but w/o overlap them我需要使我的散点图图例点更大但不重叠它们
【发布时间】:2022-01-20 13:46:14
【问题描述】:

我在使用散点图图例时遇到问题:我需要图例点的大小更大,但我不知道该怎么做。我试图将 'sizes' * 100 相乘,但在图例中,这些点重叠了。感谢您的帮助。

这是我的代码:

x = np.array([1,2,3,4,5,6,7,8,9,10])
y = np.array([13,27,36,9,10,22,62,77,42,46])
sizes = np.array([1,2,3,4,5,1,3,9,5,2])

fig, ax = plt.subplots(figsize=(12, 8))

scatter = ax.scatter(x, y, s=sizes)

handles, labels = scatter.legend_elements(prop="sizes", 
alpha=0.6)
ax.legend(
    handles,
    labels,
    loc="lower right",
    bbox_to_anchor=(1.27, 0.5),
    ncol=2, frameon=False
    );

【问题讨论】:

    标签: python matplotlib charts scatter-plot legend-properties


    【解决方案1】:

    图例有一个关键字markerscale=,用于根据标记在图中的外观放大或缩小标记。请注意,此比例是线性的(0.5 表示宽度的一半,而plt.scatter()s= 参数是相对于标记的区域)。

    这是一个示例,将绘图上的标记缩放100 并将图例中的点减半:

    import matplotlib.pyplot as plt
    import numpy as np
    
    x = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
    y = np.array([13, 27, 36, 9, 10, 22, 62, 77, 42, 46])
    sizes = np.array([1, 2, 3, 4, 5, 1, 3, 9, 5, 2])
    
    fig, ax = plt.subplots(figsize=(12, 8))
    
    scatter = ax.scatter(x, y, s=sizes * 100)
    
    handles, labels = scatter.legend_elements(prop="sizes", alpha=0.6)
    ax.legend(handles, labels,
              loc="center left", bbox_to_anchor=(1.01, 0.5),
              markerscale=0.5,
              ncol=2, frameon=False)
    plt.tight_layout()
    plt.plot()
    

    【讨论】:

    • 如果这回答了您的问题,您可以考虑通过单击复选标记将答案标记为已接受,将其从灰色变为绿色
    猜你喜欢
    • 1970-01-01
    • 2017-08-10
    • 1970-01-01
    • 2019-03-28
    • 2012-11-17
    • 2021-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多