matplotlib Seaborn distplot是否不支持范围?

bxjv4tth  于 2023-01-09  发布在  其他
关注(0)|答案(5)|浏览(151)

我有一个数据数组data1,包含从0到1000以上的值,我只想有一个直方图和一个KDE,包含从0到10的值,因此我写了:

sns.distplot(data1, kde=True, hist=True, hist_kws={"range": [0,10]})
plt.show()

然而,我得到的是所有值的直方图(一直到2000年)。

sigwle7e

sigwle7e1#

您可以过滤数据,然后在过滤后的数据上调用displot

filtered = data1[(data1 >= 0) & (data1 < 10)]
sns.distplot(filtered, kde=True, hist=True, hist_kws={"range": [0,10]})
plt.show()

假设data1是一个numpy数组。

hrirmatl

hrirmatl2#

您可以为sns返回的Axes对象设置范围。

ax = sns.distplot(data1, kde=True, hist=True, hist_kws={"range": [0,10]})
ax.set_xlim(0, 10)
ppcbkaq5

ppcbkaq53#

如果你想只计算[0,10]中的值的KDE和直方图,你可以使用参数kde_kws={"clip":(0,10)}, hist_kws={"range":(0,10)}

sns.distplot(data1, kde=True, hist=True, kde_kws={"clip":(0,10)}, hist_kws={"range":(0,10)})
plt.show()
u5rb5r59

u5rb5r594#

使用histplot的选项binrange
这在现代的seaborn中也是有效的(注意**distplot已经折旧)。

binrange: pair of numbers or a pair of pairs
Lowest and highest value for bin edges; 
can be used either with bins or binwidth. Defaults to data extremes.
2wnc66cl

2wnc66cl5#

可以,只需在声明绘图后将plt.xlim(x,x1)放在一行中,生成的绘图将只包含x和x1之间的x值。

相关问题