我有一个像这样的DataFrame:
Type Week Value
0 A 1 11
1 A 2 1
2 A 3 7
3 B 1 13
4 B 2 20
5 B 3 30
我想绘制类似df.plot.bar()
的图这样看起来像https://i.stack.imgur.com/X4gSM.png
我该怎么做?
我曾用Seaborn进行过剧情:
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
data=[['A',1,11],['A',2,1],['A',3,7],['B',1,13],['B',2,20],['B',3,30]]
df=pd.DataFrame(data,columns=['Type','Week','Value'])
sns.barplot(x='Type',y='Value',data=df,hue='Week')
使用Seaborn,您可以正确选择X和Y进行绘制,并使用色相参数显示每周的值。Seaborn基于matplotlib,因此您在plt中使用的功能也将在Seaborn中应用(例如plt.legend(),plt.xlabel()等)。
要详细说明@QuangHoang的评论,请执行以下两个步骤。
首先,旋转数据。
pivoted = df.pivot('Type', 'Week', 'Value')
pivoted
# Week 1 2 3
# Type
# A 11 1 7
# B 13 20 30
DataFrame.plot.bar的文档中概述了其原因(强调是我的)。
x:标签或位置,可选。允许绘制一列与另一个。 如果未指定,则使用DataFrame的索引。
y:标签或位置,可选。允许绘制一列与另一个。 如果未指定,则使用所有数字列。
如果未指定任何参数,它将使用Type
索引作为x
,每个数字列(现在是每周一次)使用以获得许多柱的y
值。这正是您想要的。
pivoted.plot.bar()