使用seaborn distplot设置轴的最大值

20

Seaborn distplots是否可以设置最小和最大显示限制?

我正在尝试循环遍历pandas数据框的列,但所有输出都得到相同的轴。

for v in var_list: 
    df[v].dropna(inplace=True) 
    var=df[v].max()
    vstar = v + "_output.png"
    splot = sns.distplot(df[v])
#    sns.plt.xlim(0, var)
    splot.figure.savefig(vstar)
    splot.autoscale()

我尝试过使用sns.plt.xlim()autoscale(),但似乎都没起作用。我漏掉了什么?

2个回答

29

你应该可以直接使用 plt.xlim(0, var) 来获得你想要的结果:

In [24]: np.random.seed(0)

In [25]: data = np.random.randn(1000)

In [26]: sns.distplot(data)
Out[26]: <matplotlib.axes._subplots.AxesSubplot at 0xfa291967f0>

In [27]: plt.savefig('plot1.png')

在此输入图片描述

In [39]: plt.clf()

In [40]: sns.distplot(data)
Out[40]: <matplotlib.axes._subplots.AxesSubplot at 0xfa291bcd30>

In [41]: plt.xlim(-10, 10)
Out[41]: (-10, 10)

In [42]: plt.savefig('plot2.png')

这里输入图像描述


4
顺便提一下,如果您更喜欢使用面向对象的 API 并直接在 sns.distplot 返回的 Axes 上操作(这对于更复杂的图形很有益处),您也可以在保存图形之前使用 splot.set_xlim(0, var)。最终结果是相同的。 - fuglede

2
对于 sns.histplotsns.displot,我们可以使用参数 binrange:
splot = sns.displot(df[v], binrange=(0, var))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接