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

Jar*_*rad 7 python plot matplotlib pandas

如何使用熊猫数据框方法绘制条形图的条形图不同颜色plot

如果我有这个 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
Run Code Online (Sandbox Code Playgroud)

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

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

我正在尝试什么:

df.plot(x='index', y='count', kind='bar', label='index', colormap='Paired', use_index=False)
Run Code Online (Sandbox Code Playgroud)

结果:

不是不同的颜色

我已经知道的(是的,这是可行的,但同样,我的目的是弄清楚如何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()
Run Code Online (Sandbox Code Playgroud)

最终结果但用于循环

Imp*_*est 9

没有任何参数可以传递给df.plot单个列的不同颜色的条。
由于不同列的条形颜色不同,一个选项是在绘图之前转置数据框,

ax = df.T.plot(kind='bar', label='index', colormap='Paired')
Run Code Online (Sandbox Code Playgroud)

现在,这会将数据绘制为子组的一部分。因此,需要应用一些调整来正确设置限制和 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()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

虽然我猜这个解决方案符合问题的标准,但使用plt.bar. 一次调用plt.bar就足够了

plt.bar(range(len(df)), df["count"], color=plt.cm.Paired(np.arange(len(df))))
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

完整代码:

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()
Run Code Online (Sandbox Code Playgroud)


Jai*_*ves 7

您可以根据需要使用参数为每一列着色color

例如(例如,有 3 个变量):

df.plot.bar(color=['C0', 'C1', 'C2'])
Run Code Online (Sandbox Code Playgroud)

注意:'C0', 'C1', ...'上面提到的字符串是matplotlib中内置的快捷颜色句柄。它们表示活动配色方案中的第一个、第二个、第三个默认颜色,依此类推。事实上,它们只是一个示例,您可以使用 RGB 代码或任何其他颜色约定轻松使用任何自定义颜色。

您甚至可以突出显示特定列,例如,此处的中间列:

df.plot.bar(color=['C0', 'C1', 'C0'])
Run Code Online (Sandbox Code Playgroud)

要在给定的示例代码中重现它,可以使用:

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', color=['C0', 'C1', 'C2', 'C3', 'C4'])
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()

Run Code Online (Sandbox Code Playgroud)

不同颜色的示例:

不同颜色的例子

任意重复颜色的示例:

任意重复颜色的示例

参考链接:在熊猫中分配线条颜色