如何绘制从不同列着色的堆叠 seaborn 直方图
How to plot a stacked seaborn histogram colored from a different column
我的数据集是这样的
Days Visitors
Tuesday 23
Monday 30
Sunday 120
Friday 2
Friday 30
Tuesday 13
Monday 20
Saturday 100
如何绘制此数据集的直方图,但假设它是一个大型数据集(560030 行),而不仅仅是这些值。
实际上我想在 x 轴上显示天数,在 Y 轴上显示访问者。
- 使用
seaborn
,这是 matplotlib 的 API。
- 这将显示一周中每一天的访问者数量分布。
sns.histplot
import seaborn as sns
import pandas as pd
import numpy as np # for test data
import random # for test data
import calendar # for test data
# test dataframe
np.random.seed(365)
random.seed(365)
df = pd.DataFrame({'Days': random.choices(calendar.day_name, k=1000), 'Visitors': np.random.randint(1, 121, size=(1000))})
# display(df.head(6))
Days Visitors
0 Friday 83
1 Sunday 53
2 Saturday 34
3 Wednesday 92
4 Tuesday 45
5 Wednesday 6
# plot the histogram
sns.histplot(data=df, x='Visitors', hue='Days', multiple="stack")
- 绘制直方图后,如果需要移动图例,可能需要使用 seaborn issue: Not clear how to reposition seaborn.histplot legend #2280 中的解决方法。
sns.distplot
- 此选项最清楚地传达了访客人数的每日分布
sns.displot(data=df, col='Days', col_wrap=4, x='Visitors')
条形图
seaborn.barplot
- 这将显示指定日期所有访问的总和
sns.barplot(data=df, x='Days', y='Visitors', estimator=sum, ci=None)
plt.xticks(rotation=90)
我的数据集是这样的
Days Visitors
Tuesday 23
Monday 30
Sunday 120
Friday 2
Friday 30
Tuesday 13
Monday 20
Saturday 100
如何绘制此数据集的直方图,但假设它是一个大型数据集(560030 行),而不仅仅是这些值。
实际上我想在 x 轴上显示天数,在 Y 轴上显示访问者。
- 使用
seaborn
,这是 matplotlib 的 API。 - 这将显示一周中每一天的访问者数量分布。
sns.histplot
import seaborn as sns
import pandas as pd
import numpy as np # for test data
import random # for test data
import calendar # for test data
# test dataframe
np.random.seed(365)
random.seed(365)
df = pd.DataFrame({'Days': random.choices(calendar.day_name, k=1000), 'Visitors': np.random.randint(1, 121, size=(1000))})
# display(df.head(6))
Days Visitors
0 Friday 83
1 Sunday 53
2 Saturday 34
3 Wednesday 92
4 Tuesday 45
5 Wednesday 6
# plot the histogram
sns.histplot(data=df, x='Visitors', hue='Days', multiple="stack")
- 绘制直方图后,如果需要移动图例,可能需要使用 seaborn issue: Not clear how to reposition seaborn.histplot legend #2280 中的解决方法。
sns.distplot
- 此选项最清楚地传达了访客人数的每日分布
sns.displot(data=df, col='Days', col_wrap=4, x='Visitors')
条形图
seaborn.barplot
- 这将显示指定日期所有访问的总和
sns.barplot(data=df, x='Days', y='Visitors', estimator=sum, ci=None)
plt.xticks(rotation=90)