如何在Seaborn中调整类别“群居”的猫形图的大小而又不生成第二个图(错误)

时间:2018-08-13 16:04:40

标签: python pandas seaborn

对于调整(大多数)Seaborn图的大小,我一直遵循以下约定:

fig, ax = plt.subplots(figsize=(10,5))
sns.catplot(x='xdata', y='ydata', data=df, kind='swarm', ax=ax)

这也适用于猫图,但是会生成第二个完全空白的图。这是Seaborn中的错误吗(或者我做错了什么)?有没有办法在不获得第二个空白图的情况下正确调整此图的大小(当我说空白图时,我的意思是一个没有数据的图与第一个图相同的轴标签)?

请记住,我是Seaborn的新手。预先感谢。

1 个答案:

答案 0 :(得分:1)

请考虑不调用subplots并使用 height aspect 参数,因为这个深奥的factorplot solution显示了宽高是宽的倍数,可能保持尺寸一致:

sns.catplot(x='xdata', y='ydata', data=df, kind='swarm', height=5, aspect=2)

help(sns.catplot)输出:

height : scalar, optional
        Height (in inches) of each facet. See also: ``aspect``.

aspect : scalar, optional
    Aspect ratio of each facet, so that ``aspect * height`` gives the width
    of each facet in inches.

使用随机数据进行演示:

import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

np.random.sample(71318)
df = pd.DataFrame({'xdata': np.random.choice(['pandas', 'r', 'julia', 'sas', 'spss', 'stata'], 100),
                   'ydata': np.random.choice(range(1,6), 100)})

sns.catplot(x='xdata', y='ydata', data=df, kind='swarm', height=5, aspect=2)

plt.show()
plt.clf()
plt.close()

Seaborn Plot Output