如何使用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
我需要设置df.plot()
个参数,以便绘制图中的每个条:
我在尝试什么:
df.plot(x='index', y='count', kind='bar', label='index', colormap='Paired', use_index=False)
结果:
我已经知道的(是的,这有效,但同样,我的目的是要弄清楚如何只使用df.plot
来执行此操作。当然必须有可能吗?):< / p>
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()
答案 0 :(得分:3)
没有任何参数可以传递给df.plot
,对于单个列,不同颜色的条形图
由于不同列的条形图的颜色不同,因此可以选择在绘图之前转置数据框,
ax = df.T.plot(kind='bar', label='index', colormap='Paired')
现在,这将绘制数据作为子组的一部分。因此,需要进行一些调整以正确设置限制和x标签。
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()
虽然我猜这个解决方案符合问题的标准,但使用plt.bar
实际上并没有错。单次调用plt.bar
就足够了
plt.bar(range(len(df)), df["count"], color=plt.cm.Paired(np.arange(len(df))))
完整代码:
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()
答案 1 :(得分:1)
您可以根据需要使用参数color
为每列着色。
例如(例如,具有3个变量):
df.plot.bar(color=['C0', 'C1', 'C2'])
注意:上面提到的字符串'C0', 'C1', ...'
是matplotlib中的内置快捷方式颜色句柄。它们表示活动配色方案中的第一,第二,第三默认颜色,依此类推。实际上,它们只是一个示例,您可以轻松地使用RGB代码或任何其他颜色约定来使用任何自定义颜色。
您甚至可以突出显示特定的列,例如,此处的中间一列:
df.plot.bar(color=['C0', 'C1', 'C0'])
要在给出的示例代码中重现它,可以使用:
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()
具有不同颜色的示例:
任意重复颜色的示例:
答案 2 :(得分:1)