【问题标题】:How to draw legend for scatter plot indicating size?如何为指示大小的散点图绘制图例?
【发布时间】:2015-07-10 12:32:43
【问题描述】:

我在matplotlib 中有一个散点图。散点图显示了具有不同颜色深浅和大小的圆圈。

我想为圆圈的大小添加一个图例。图例不应该被情节中圆圈的颜色着色,而是说“灰色”。然后应该有三个条目对应一个大灰圈、中灰圈和小灰圈,都带有一些文字。在一个图例条目中,我只需要一个圆圈,而不是 matplotlib 中似乎默认的多个圆圈。

我该怎么做?

我已经根据这个http://matplotlib.org/users/legend_guide.html尝试了这个,

但它给出的是一个矩形,而不是一个圆形。

red_patch = mpatches.Circle((3,3), radius = 1000, color='blue', label='The red data')
ax1.legend(handles=[red_patch])

【问题讨论】:

  • 大部分都在答案here 中完成,除了更改图例标记颜色。我会考虑的。

标签: python matplotlib plot


【解决方案1】:

尽可能多地自动完成工作:

import matplotlib.pyplot as plt
from numpy.random import random

colors = ['b', 'c', 'y', 'm', 'r']

ll = plt.scatter(random(10), random(10), s=random(10)*10, marker='o', color=colors[0])
l  = plt.scatter(random(10), random(10), s=random(10)*20, marker='o', color=colors[1])
a  = plt.scatter(random(10), random(10), s = random(10)*300, marker='o', color=colors[2])
z  = plt.scatter(random(10), random(10), s = 35, marker='+', color=colors[3]) # not in legend

gll = plt.scatter([],[], s=10, marker='o', color='#555555')
gl = plt.scatter([],[], s=20, marker='o', color='#555555')
ga = plt.scatter([],[], s=300, marker='o', color='#555555')

plt.legend((gll,gl,ga),
       ('10', '20', '300'),
       scatterpoints=1,
       loc='lower left',
       ncol=1,
       fontsize=8)

plt.show()

可以通过循环sizes=[10,20,300] 或类似的东西来改善。

【讨论】:

  • 如果我只有一个数据系列怎么办?我还能制作相同的图例吗?
  • 当然。您可以通过仅使用其中一个数据系列运行示例代码来尝试一下
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-05-21
  • 2023-02-09
  • 1970-01-01
  • 2018-09-04
  • 1970-01-01
  • 1970-01-01
  • 2018-04-17
相关资源
最近更新 更多