多柱绘图Seaborn和Matplotlib

2024-09-28 21:56:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下数据表:

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不允许在任何轴上绘制两个变量,我应该如何处理这种情况


Tags: 数据citydate图表绘制情况价格seaborn
1条回答
网友
1楼 · 发布于 2024-09-28 21:56:53
  • 将数据帧转换为长格式
  • 使用^{}绘图
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

data = {'Date': ['01/01', '01/01', '02/01', '02/01'],
        'City': ['NYC', 'SF', 'NYC', 'SF'],
        'Sales': [200, 300, 400, 42],
        'PSale1': [300, 140, 410, 24],
        'PSale2': [178, 100, 33, 60]}

df = pd.DataFrame(data)

# convert to long
dfl = df.set_index(['Date', 'City', 'Sales']).stack().reset_index().rename(columns={'level_3': 'pred', 0: 'value'})

# plot
g = sns.FacetGrid(dfl, row='City')
g.map(sns.barplot, 'Date', 'value', 'pred').add_legend()
plt.show()

enter image description here


  • 合二为一
# shape the dataframe
dfc = df.drop(columns=['Sales']).set_index(['Date', 'City']).stack().unstack(level=1)
dfc.columns.name = None

# plot
dfc.plot.bar(stacked=True)
plt.xlabel('Date: Predicted')
plt.show()

enter image description here

相关问题 更多 >