gpt4 book ai didi

python - Pandas DataFrame 条形图 - 从特定颜色图中绘制不同颜色的条形图

转载 作者:行者123 更新时间:2023-11-28 21:41:42 35 4
gpt4 key购买 nike

如何使用 pandas dataframe plot 方法绘制不同颜色的条形图 only

如果我有这个 DataFrame:

df = pd.DataFrame({'count': {0: 3372, 1: 68855, 2: 17948, 3: 708, 4: 9117}}).reset_index()

index count
0 0 3372
1 1 68855
2 2 17948
3 3 708
4 4 9117

我需要设置哪些 df.plot() 参数以便图中的每个条形图:

  1. 使用“配对”颜色图
  2. 为每个条绘制不同的颜色

我正在尝试:

df.plot(x='index', y='count', kind='bar', label='index', colormap='Paired', use_index=False)

结果:

not different colors

我已经知道的(是的,这行得通,但同样,我的目的只是弄清楚如何使用 df.plot 来做到这一点。当然它必须是可能吗?):

def f(df):
groups = df.groupby('index')

for name,group in groups:
plt.bar(name, group['count'], label=name, align='center')

plt.legend()
plt.show()

end result but used for loop

最佳答案

您没有可以传递给 df.plot 的参数来为单个列以不同的方式对条形图进行着色。
由于不同列的条形颜色不同,一个选项是在绘图之前转置数据框,

ax = df.T.plot(kind='bar', label='index', colormap='Paired')

现在这会将数据绘制为子组的一部分。因此,需要进行一些调整以正确设置限制和 xlabels。

import matplotlib.pyplot as plt
import pandas as pd

df = pd.DataFrame({'count': {0: 3372, 1: 68855, 2: 17948, 3: 708, 4: 9117}}).reset_index()

ax = df.T.plot(kind='bar', label='index', colormap='Paired')
ax.set_xlim(0.5, 1.5)
ax.set_xticks([0.8,0.9,1,1.1,1.2])
ax.set_xticklabels(range(len(df)))
plt.show()

enter image description here

虽然我猜这个解决方案符合问题的标准,但实际上使用 plt.bar 并没有错。一次调用 plt.bar 就足够了

plt.bar(range(len(df)), df["count"], color=plt.cm.Paired(np.arange(len(df))))

enter image description here

完整代码:

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

df = pd.DataFrame({'count': {0: 3372, 1: 68855, 2: 17948, 3: 708, 4: 9117}}).reset_index()

plt.bar(range(len(df)), df["count"], color=plt.cm.Paired(np.arange(len(df))))

plt.show()

关于python - Pandas DataFrame 条形图 - 从特定颜色图中绘制不同颜色的条形图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44493417/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com