首页 > 解决方案 > 如何使 DataFrame 绘图条以不同的颜色显示?

问题描述

我是一名新手数据分析师,我正在尝试使用 df.plot() 创建一个数据框条形图,以便条形图具有不同的颜色。我发现除非数据帧被转置,否则没有任何参数可以传递给不同颜色的条形图。我试图用下面的代码转置它:

gender_overview = pd.read_sql("SELECT Gender, COUNT(*) AS NumberOfPeople "
                          "FROM [AdventureWorks2019].[Sales].[vPersonDemographics] "
                          "GROUP BY Gender "
                          "ORDER BY NumberOfPeople DESC;", conn)

display(gender_overview)
df = gender_overview.set_index('Gender')
ax = df.T.plot(kind='bar', label='index', colormap='Paired')
labels = ['Male', 'Female', 'Not Specified']
ax.set_xticks(range(len(df)))
ax.set_xticklabels(labels=labels, rotation=0)
plt.show()

但是,条形图和 x_ticks 最终不匹配(请参阅 此处的屏幕截图。)

如何确保条形与相应的 x_ticks 匹配?

预先感谢您的帮助 :)

标签: pandasdataframematplotlibplotbar-chart

解决方案


我发现当我想要一些精细控制时,我无法使用 Pandas 进行绘图。我倾向于依靠 matplotlib。

import panda as pd
import matplotlib.pyplot as plt
import numpy as np

df = pd.DataFrame()
df['test'] = np.arange(6)
df['gender'] = ['M', 'F', 'F', 'M', 'F', 'F']
df.set_index('gender', inplace=True)

plt.bar(df.index, df['test'], color=['blue', 'red'])
plt.show()

尝试 group-by 很诱人,但我认为它没有帮助。

g = df.groupby("gender").count()
plt.bar(g.index, g['test'], color=['blue', 'red'])
plt.show()

推荐阅读