我的数据可以被看作是一个时间序列。对于t=0
,有一些数据x0
,然后对于t=1
,有一些数据x1
,等等。我试图使用这些数据的sns.histplot
here for reference创建一个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
,一个更合理的更大的bin宽度应该是10,这将把3.4; 10.2; 5.2
分组在一个bin中,而把100.13; 108.13
分组在不同的bin中。当然,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
。一个不同的库也可以。任何帮助都是感激的。
编辑:我希望这能澄清这个问题。这是我目前拥有的一个情节:x1c 0d1x忽略子图的事实。如果你看ant,你可以看到沿着y轴的bin都是相同的(大约1-2,然后2-3,等),并且它们对于每列都是相同的(沿x轴沿着的每个值)。我希望每个x
都有不同的bin。我希望这能使问题更清楚。如果没有,请让我知道。
1条答案
按热度按时间uelo1irk1#
直方图用于显示数据点的分布,在您的情况下,您显然在图中有太多的bin。要纠正这一点,请设置
bins
的数量并使用binwidth
更改bin的宽度,例如。