matplotlib.pyplot散点图中,如何使用颜色字典生成图例?

6
我正在尝试使用我的D_id_color字典为我的散点图创建图例。 我该如何根据这些值创建一个显示实际颜色的图例?
#!/usr/bin/python
import matplotlib.pyplot as plt
from matplotlib import colors
D_id_color = {'A': u'orchid', 'B': u'darkcyan', 'C': u'grey', 'D': u'dodgerblue', 'E': u'turquoise', 'F': u'darkviolet'}
x_coordinates = [1,2,3,4,5]
y_coordinates = [3,3,3,3,3]
size_map = [50,100,200,400,800]
color_map = [color for color in D_id_color.values()[:len(x_coordinates)]]

plt.scatter(x_coordinates,y_coordinates, s = size_map, c = color_map)
plt.show()

我希望图例看起来像这样,但是不是颜色名称,而是实际的颜色。
A orchid
C grey
B darkcyan
E turquoise
D dodgerblue
F darkviolet
1个回答

23

实现这一点的一种方法:

D_id_color = {'A': u'orchid', 'B': u'darkcyan', 'C': u'grey', 'D': u'dodgerblue', 'E': u'turquoise', 'F': u'darkviolet'}
x_coordinates = [1,2,3,4,5,6] # Added missing datapoint
y_coordinates = [3,3,3,3,3,3] # Added missing datapoint
size_map = [50,100,200,400,800,1200] # Added missing datapoint
color_map = [color for color in D_id_color.values()[:len(x_coordinates)]]
plt.scatter(x_coordinates,y_coordinates, s = size_map, c = color_map)

# The following two lines generate custom fake lines that will be used as legend entries:
markers = [plt.Line2D([0,0],[0,0],color=color, marker='o', linestyle='') for color in D_id_color.values()]
plt.legend(markers, D_id_color.keys(), numpoints=1)

plt.show()
这将产生:

enter image description here


它可以工作,但是它的输出图例中有两个标记并排。谢谢! - O.rka
2
.legend 接受一个参数 numpoints,用于设置要显示的点数,因此您可以通过在 legend 调用中添加 numpoints=1 来将其设置为 1。 - Primer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接