Skip to main content
 首页 » 编程设计

python之来自颜色字典的 matplotlib.pyplot 散点图图例

2025年05月04日15hnrainll

我正在尝试使用我的散点图的 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 

请您参考如下方法:

实现此目的的一种方法:

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() 

这将产生: