Python 多柱绘图Seaborn和Matplotlib

Python 多柱绘图Seaborn和Matplotlib,python,pandas,matplotlib,seaborn,Python,Pandas,Matplotlib,Seaborn,我有以下数据表: Date, City, Sales, PSale1, PSale2 其中,PSale1和PSale2是销售的预测价格 数据集如下所示: Date,City,Sales,PSale1,PSale2 01/01,NYC,200,300,178 01/01,SF,300,140,100 02/01,NYC,400,410,33 02/01,SF,42,24,60 我想在seaborn中绘制这些数据,我正在绘制一个图表,在x轴上有日期,在y轴上每个城市的PSale1和PSale2都

我有以下数据表:

Date, City, Sales, PSale1, PSale2
其中,PSale1和PSale2是销售的预测价格

数据集如下所示:

Date,City,Sales,PSale1,PSale2
01/01,NYC,200,300,178
01/01,SF,300,140,100
02/01,NYC,400,410,33
02/01,SF,42,24,60
我想在seaborn中绘制这些数据,我正在绘制一个图表,在x轴上有日期,在y轴上每个城市的PSale1和PSale2都是条形图,但我不知道如何使用这些数据

据我所知,seaborn不允许在任何轴上绘制两个变量,我应该如何处理这种情况?

  • 将数据帧转换为长格式
  • 绘图使用
将熊猫作为pd导入
导入seaborn作为sns
将matplotlib.pyplot作为plt导入
数据={'Date':['01/01','01/01','02/01','02/01'],
‘城市’:[‘纽约’、‘旧金山’、‘纽约’、‘旧金山’],
“销售”:[20030040042],
《诗篇1》:[30014041024],
《诗篇2》:[178100,33,60]}
df=pd.DataFrame(数据)
#转换为长
dfl=df.set_index(['Date','City','Sales']).stack().reset_index().rename(columns={'level_3':'pred',0:'value'})
#密谋
g=sns.FaceGrid(dfl,row='City')
g、 地图(sns.barplot,'Date','value','pred')。添加图例()
plt.show()


  • 合二为一
#塑造数据帧
dfc=df.drop(columns=['Sales'])。设置索引(['Date','City'])。堆栈()。取消堆栈(level=1)
dfc.columns.name=None
#密谋
dfc.plot.bar(叠加=真)
plt.xlabel('日期:预测')
plt.show()