【问题标题】:All scatter points aren't displayed when plotting two sets of data绘制两组数据时不显示所有散点
【发布时间】:2021-12-20 18:40:38
【问题描述】:

我试图将两个数据集分散在同一个图表上。当我尝试这样做时,一些数据会被切断。这是我的代码:

Data = {
    "Object A": [
        [8.5, 8.2, 8.9, 10.9, 7.8, 8.3],
        [42.2, 43.7, 47.3, 44.3, 44.9, 48.2]
    ],
  "Object B": [
    [7.0, 8.8, 10.5, 9.6, 8.5, 8.2],
    [44.1, 43.1, 41.9, 43.5, 42.2, 43.7]
  ],
}

for y in Data.values():
    plt.scatter(y[0], y[1])

plt.legend(['Object A', 'Object B'])
plt.show()

结果如下:

如您所见,图上仅显示对象 A 的前四个值。即使我改变它的长度,这种情况仍然存在。当我将对象 B 设为数据列表中的第一项以查看这是否会改变任何内容时,图表拒绝显示对象 B 的最后两项。

如何让图表显示所有值?谢谢

编辑:如果我添加更多数据集,图表会显示所有这些点,但仍然只截断第一个点的最后两个

【问题讨论】:

    标签: python matplotlib scatter-plot


    【解决方案1】:
    • 正在绘制所有数据点,但正如您在下图中看到的那样,有两个重叠的数据点 (8.5, 42.2)(8.2, 43.7)
    • 设置alpha=0.5显示重叠点
    • python 3.8.12matplotlib 3.4.3中测试
    Data = {'Object A': [[8.5, 8.2, 8.9, 10.9, 7.8, 8.3], [42.2, 43.7, 47.3, 44.3, 44.9, 48.2]],
            'Object B': [[7.0, 8.8, 10.5, 9.6, 8.5, 8.2], [44.1, 43.1, 41.9, 43.5, 42.2, 43.7]]}
    
    fig, axes = plt.subplots(2, 2, figsize=(10, 10), sharex=True, sharey=True)
    axes = axes.flat
    
    for k, v in Data.items():
        axes[0].scatter(v[0], v[1], label=k, alpha=0.5)
        
    axes[2].scatter(Data['Object A'][0], Data['Object A'][1], label='Object A')
    axes[3].scatter(Data['Object B'][0], Data['Object B'][1], color='tab:orange', label='Object B')
    
    axes[0].legend()
    axes[2].legend()
    axes[3].legend()
    axes[0].grid()
    axes[2].grid()
    axes[3].grid()
    
    fig.delaxes(axes[1])
    plt.show()
    

    【讨论】:

      猜你喜欢
      • 2018-09-04
      • 2021-11-28
      • 2017-10-10
      • 1970-01-01
      • 1970-01-01
      • 2020-05-05
      • 2017-09-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多