Seaborn distplot不支持范围吗?

时间:2016-05-06 18:57:08

标签: python matplotlib seaborn

我有一个名为data1的数据数组,其中包含从0到超过一千的值。我只想要一个直方图和一个从0到10的值的KDE。因此我写道:

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

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

4 个答案:

答案 0 :(得分:9)

您只需过滤数据并通过过滤后的数据调用displot

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

假设data1是一个numpy数组。

答案 1 :(得分:2)

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

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

答案 2 :(得分:0)

确实如此,只需在声明绘图后将plt.xlim(x,x1)放在一行中,结果绘图就只会具有x和x1之间的x值。您可以使用ylim对y轴执行相同的操作。

答案 3 :(得分:0)

如果只想为[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()