如何用指定字典为Matplotlib柱状图匹配对应颜色?
解决方法
要让每个柱子的颜色和data字典的键一一对应,你需要根据data的键的顺序,从colors字典中依次取出对应的颜色值,生成一个和柱子顺序匹配的颜色列表,再传给plt.bar的color参数。
另外注意:你的data字典里的值是字符串类型,绘图前最好转换成数值类型(int/float),避免潜在问题。
修改后的完整代码
import matplotlib.pyplot as plt data = {"rdeca": "4", "zelena": "5", "rumena": "7", "modra": "2", "roza": "9"} colors = {"rdeca": "red", "zelena": "green", "modra": "blue", "roza": "pink", "rumena": "yellow"} # 将data的值转为整数 data_values = [int(v) for v in data.values()] # 根据data的键顺序生成对应颜色列表 color_list = [colors[key] for key in data.keys()] plt.bar(range(len(data)), data_values, align='center', color=color_list) plt.xticks(range(len(data)), list(data.keys())) plt.show()
关键说明
color_list = [colors[key] for key in data.keys()]:遍历data的所有键,按顺序从colors中取出对应颜色,这样颜色顺序就和data的柱子顺序完全匹配了。- 转换
data的值为数值类型:字符串类型的数值在绘图时可能导致坐标轴显示异常,转成int/float能保证绘图正常。
这样修改后,每个柱子就会对应到colors字典里的正确颜色了。
内容的提问来源于stack exchange,提问作者CH4
相关产品推荐
相关产品推荐

