python - 如何绘制从不同列着色的堆叠 seaborn 直方图
问题描述
我的数据集是这样的
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 问题中的解决方法:不清楚如何重新定位 seaborn.histplot 图例 #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)
推荐阅读
- python - 为什么我需要为指标提供(非)特权属性值?
- python - 如何填充python中canny检测到的边缘?
- docker - 无法从 WSL2 docker 容器连接到 WSL2 localhost 服务器
- r - 我需要一个函数来创建一个新变量,比如 Y_(i,t),方法是在面板数据集中贬低 X_(i,t) 变量,其中时间 T = 18 和国家/地区 n = 48
- android - 如何从 Android 应用风格中排除动态功能?
- neo4j - Neo4j 导入的标准输出中的“-”表示什么?
- python - 将 pytorch 数据加载器加载到 GPU 中
- flutter - 错误:使用生物特征验证时出错:PlatformException(no_fragment_activity,local_auth 插件要求活动是 FragmentActivity。,null,null)
- dagster - 与其他管道组成管道
- sql - 在日期时间列的日期部分添加约束