【问题标题】:How to change a figure's size in Python Seaborn package如何在 Python Seaborn 包中更改图形的大小
【发布时间】:2015-10-30 22:54:55
【问题描述】:

我在使用 Seaborn(导入为 sns)增加我的情节人物的大小时遇到​​了麻烦。我正在使用sns.pairplot 将数据框的列相互绘制。

    %matplotlib inline
    plt.rcParams['figure.figsize']=10,10
    columns=list(df.columns.values)
    g=sns.pairplot(df, kind='reg', x_vars=columns,y_vars = ['Column 1'])

图中的数据填充得很好,但是图形太小了。

我以为plot.rCParams['figure.figsize']会控制数字的大小,但似乎没有生效。我已经尝试了一些在线板上的不同建议,但似乎没有任何效果。

【问题讨论】:

  • 你试过pairplot中的size参数了吗?
  • 尝试在 pairplot 中设置 size=5 以使图像更大,但似乎没有生效。我认为问题在于 seaborn 试图将所有 10 个地块放置在彼此相邻的一行中,这使得它对于屏幕来说太大了,除非这些地块被缩小。我可以通过单独绘制数据框列来实现这一点,但我认为 seaborn 有一种方法可以自动将数据框列子绘制到不同的行上,而不会缩小它们。
  • 您是否在笔记本中查看这些内容?将它们保存为图像,我保证它们会更大size=5
  • 不要使用size。这是一个已弃用的参数。请改用height

标签: python plot seaborn


【解决方案1】:

sns.pairplot “返回底层 PairGrid 实例以进行进一步调整” ...例如更改图形大小:

g=sns.pairplot(df, kind='reg', x_vars=columns,y_vars = ['Column 1'])
g.fig.set_size_inches(15,15)

【讨论】:

  • 有趣的是,这似乎缩小了窗口内绘图的大小,但不会缩小窗口本身。所以我现在有这个巨大的窗口,里面有空的空间,然后是左下角的一个小人物。你怎么看?
【解决方案2】:

尝试将大小放在括号中,这对我有用:

plt.rcParams['figure.figsize']=(10,10)

【讨论】:

  • 这不一定有效。请改用其他答案。
  • 不是OO接口
【解决方案3】:

除了well working answer by @MartinAnderson,seaborn 本身提供了设置网格子图高度的选项。结合aspect,这决定了图形的整体大小,具体取决于网格中子图的数量。

在seaborn

g = sns.pairplot(..., size=10, aspect=0.6)

在 seaborn >= 0.9.0:

g = sns.pairplot(..., height=10, aspect=0.6)

请注意,这适用于所有生成图形级别网格的 seaborn 函数,例如 pairplotrelplotcatplotlmplot 以及底层的PairGridFacetGrid

对于其他直接绘制到轴的 seaborn 绘图,How do you change the size of figures drawn with matplotlib? 的解决方案可以正常工作。

【讨论】:

  • size 已弃用,请改用height
  • @MERose 是的,确实,这就是这个答案告诉你的。
  • TypeError: bar() got multiple values for argument 'height' 使用底部的。 sns 版本 = 0.9.0
  • @Crispy13 请完整阅读答案。它说 “请注意,这适用于生成图形级别网格的所有 seaborn 函数,...”
  • @ImportanceOfBeingErnest 对不起。
【解决方案4】:

如果我们只想改变高度或宽度,那么你可以这样做

g = sns.pairplot(df, kind='reg', x_vars=columns,y_vars = ['Column 1'])
g.fig.set_figheight(6)
g.fig.set_figwidth(10)

【讨论】:

    【解决方案5】:

    您可以使用 set 进行样式控制:https://seaborn.pydata.org/generated/seaborn.set.html

    sns.set(rc={'figure.figsize':(20,10)})
    

    【讨论】:

    • 虽然此代码可能会解决问题,但 including an explanation 关于如何以及为何解决问题将真正有助于提高您的帖子质量,并可能导致更多的赞成票。请记住,您正在为将来的读者回答问题,而不仅仅是现在提出问题的人。请edit您的答案以添加解释并说明适用的限制和假设。 From Review
    【解决方案6】:

    参考 Rahul 关于 sns.catplot (Unable to change the plot size with matplotlib and seaborn) 的问题

    如果你在 jupyter notebook 中尝试:

    plt.figure(figsize=(25,20))
    sns.boxplot(x='CriticRating', y='AudienceRating', data=movies)
    

    它正在工作,但是

    sns.boxplot(x='CriticRating', y='AudienceRating', data=movies)
    plt.figure(figsize=(25,20))
    

    不工作(情节非常小)。在 sns.boxplot() 之前添加行 plt.figure(figsize=(25,20)) 并包含 %matplotlib inline 当然是很重要的,以便在 jupyter 中显示绘图。

    【讨论】:

    • 此答案适用于boxplot,但不适用于任何创建图形本身的图,例如pairplot(此问题)或catplot(您链接到的问题)。跨度>
    猜你喜欢
    • 2018-12-26
    • 2014-11-27
    • 2020-05-24
    • 1970-01-01
    相关资源
    最近更新 更多