我有一个名为data1的数据数组,其中包含从0到超过一千的值。我只想要一个直方图和一个从0到10的值的KDE。因此我写道:
sns.distplot(data1, kde=True, hist=True, hist_kws={"range": [0,10]})
plt.show()
然而,我得到的是所有值的直方图(直到2000年代)。
答案 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()