如何为DataFrame柱状图的柱子设置不同颜色?
给Pandas柱状图的每个柱子设置不同颜色
当然可以实现!你只需要在df.plot()方法里指定color参数,传入一个和数据行数量对应的颜色列表就行,列表里的颜色会按顺序对应每一行的柱子。
直接指定每个柱子的颜色
比如你想让John是红色、Mary是橙色,剩下的可以自定义其他颜色,代码修改如下:
import pandas as pd import matplotlib.pyplot as plt df = pd.DataFrame({ 'name':['john','mary','peter','jeff','bill','lisa','jose'], 'age':[23,78,22,19,45,33,20], 'gender':['M','F','M','M','M','F','M'], 'state':['california','dc','california','dc','california','texas','texas'], 'num_children':[2,0,0,3,2,1,4], 'num_pets':[5,1,0,5,2,2,3] }) # 定义每个柱子对应的颜色,顺序和df里的name顺序一致 colors = ['red', 'orange', 'blue', 'green', 'purple', 'pink', 'brown'] # 绘制柱状图时传入color参数 df.plot(kind='bar', x='name', y='age', color=colors) plt.show()
进阶:根据列值动态设置颜色
如果想根据数据里的其他列(比如gender)来自动分配颜色,也可以这样做:
# 定义性别对应的颜色映射 color_map = {'M': 'blue', 'F': 'pink'} # 根据gender列生成颜色列表 dynamic_colors = df['gender'].map(color_map) df.plot(kind='bar', x='name', y='age', color=dynamic_colors) plt.show()
这样就能轻松实现每个柱子颜色不同的效果啦!
内容的提问来源于stack exchange,提问作者Lewis.H
相关产品推荐
相关产品推荐

