如何传递二维直方图中每个离散值的直方图箱并绘制它

问题描述 投票:0回答:1

我的数据可以看作是一个时间序列。对于

t=0
,有一些数据
x0
,然后对于
t=1
,有一些数据
x1
,等等。我正在尝试使用
sns.histplot
here 创建一个 2D 直方图,以供参考 该数据。我想计算沿 y 轴的 bin,并为每个
t
单独传递,但我不知道该怎么做。提供一些代码:

time  value
0     1.2
0     1.3
0     0.4
0     0.3
0     1.34
0     1.31
0     1.36
...   ...
1     3.4
1     10.2
1     5.2
1     100.13
1     108.13
...   ...
n     1.2
n     2.5

我有一个数据框,

df
,看起来像这样。请注意 0.3 的 binwidth 对于
t=0
来说是合适的,因为它将值
0.3; 0.4
放入一个 bin 中,而将值
1.2; 1.3; 1.34; 1.31; 1.36
放入不同的 bin 中。但是
t=1
的 binwidth 不起作用,因为每个值都有自己的 bin。对于
t=1
,更合理的 binwidth 为 10,这会将
3.4; 10.2; 5.2
分组到一个 bin 中,将
100.13; 108.13
分组到不同的 bin 中。当然,垃圾箱不必具有相同的大小,例如 0.3 或 10,但这只是为了说明问题。

目前,代码是

sns.histplot(df, x='time', y='value', discrete=(True, False))
,但这不是我想要的。我想传递这样的东西:

sns.histplot(df, x='time', y='value', binwidth=(1, (binwidth_t0, binwidth_t1,...,binwidth_n)))

其中每个

t
的每个 binwidth 都是独立传递的,并且相同的 binwidth 用于 x 轴(它是离散的)。

有办法实现这一点吗?它也不必与

sns.histplot
一起使用。不同的图书馆很好。如有任何帮助,我们将不胜感激。

编辑:我希望这能澄清这个问题。这是我目前拥有的情节: 忽略有次要情节的事实。如果您查看 ant,您可以看到沿 y 轴的 bin 都是相同的(大约 1-2,然后 2-3 等),并且每列(沿 x 轴的每个值)它们都是相同的。我希望每个

x
都有不同的垃圾箱。我希望这能让问题更加清楚。如果没有,请告诉我。

python matplotlib seaborn histogram visualization
1个回答
0
投票

直方图用于显示数据点的分布,就您的情况而言,您的图中显然有太多箱。要纠正此问题,请设置

bins
的数量并使用
binwidth
更改垃圾箱的宽度,例如

sns.histplot(df, x = 'time', y = 'value', bins = 35,  binwidth = 5)
© www.soinside.com 2019 - 2024. All rights reserved.