如何使用 seaborn factorplot 更改图形大小

Posted

技术标签:

【中文标题】如何使用 seaborn factorplot 更改图形大小【英文标题】:How to change figuresize using seaborn factorplot 【发布时间】:2014-11-27 14:41:28 【问题描述】:
%pylab inline

import pandas as pd
import numpy as np
import matplotlib as mpl
import seaborn as sns

typessns = pd.DataFrame.from_csv('C:/data/testesns.csv', index_col=False, sep=';')

mpl.rc("figure", figsize=(45, 10))
sns.factorplot("MONTH", "VALUE", hue="REGION", data=typessns, kind="box", palette="OrRd");

无论我在 figsize 中指定什么尺寸,我总是得到一个小尺寸的图... 如何解决?

【问题讨论】:

【参考方案1】:
import seaborn as sns

sns.set(rc='figure.figsize':(12.7,8.6))

plt.figure(figsize=(45,10))

Output

【讨论】:

【参考方案2】:

2019 年添加的注意事项:在现代 seaborn 版本中,size 参数已重命名为 height

更具体一点:

%matplotlib inline

import seaborn as sns

exercise = sns.load_dataset("exercise")

# Defaults are size=5, aspect=1
sns.factorplot("kind", "pulse", "diet", exercise, kind="point", size=2, aspect=1)
sns.factorplot("kind", "pulse", "diet", exercise, kind="point", size=4, aspect=1)
sns.factorplot("kind", "pulse", "diet", exercise, kind="point", size=4, aspect=2)

您想在构建绘图时将参数“size”或“aspect”传递给 sns.factorplot()。

大小会改变高度,同时保持纵横比(所以如果只改变大小,它也会变宽。)

Aspect 会改变宽度,同时保持高度不变。

上面的代码应该可以在ipython notebook中本地运行。

这些示例中的绘图尺寸被缩小以显示效果,并且因为上述代码中的绘图在保存为 png 时相当大。这也表明 size/aspect 包括边距中的图例。

大小=2,方面=1

大小=4,方面=1

大小=4,方面=2

此外,一旦加载了“sns”模块,就可以查看此绘图功能的所有其他有用参数/参数和默认值:

help(sns.factorplot)

【讨论】:

这是唯一适合我的解决方案。尝试了所有其他方法,即使没有错误,图形仍然显示为默认大小和纵横比(小和方形)。【参考方案3】:

截至 2018 年 7 月的注意事项:

seaborn.__version__ == 0.9.0

影响上述答案的两个主要变化

    factorplot 函数已重命名为 catplot()

    size 参数已重命名为 height,用于多图网格函数和使用它们的函数。

https://seaborn.pydata.org/whatsnew.html

意思是 @Fernando Hernandez 提供的答案应按以下方式调整:

%matplotlib inline

import seaborn as sns

exercise = sns.load_dataset("exercise")

# Defaults are hieght=5, aspect=1
sns.catplot("kind", "pulse", "diet", exercise, kind="point", height=4, aspect=2)

【讨论】:

【参考方案4】:

如果您只想缩放图形,请使用以下代码:

import matplotlib.pyplot as plt
plt.figure(figsize=(8, 6))
sns.factorplot("MONTH", "VALUE", hue="REGION", data=typessns, kind="box", palette="OrRd"); // OR any plot code

【讨论】:

【参考方案5】:

mpl.rc 存储在全局字典中(请参阅http://matplotlib.org/users/customizing.html)。 因此,如果您只想(本地)更改一个图形的大小,它就可以解决问题:

plt.figure(figsize=(45,10))
sns.factorplot(...)

使用 matplotlib-1.4.3seaborn-0.5.1 对我有用

【讨论】:

确实为我工作,直到我尊重与您相同的顺序,plt.figure 确实必须先行。谢谢 这种情况下还需要import matplotlib.pyplot as plt @psychemedia 我还发现在大多数情况下坚持使用 'height' 参数而不是导入 pyplot 更好!【参考方案6】:

图形的大小由factorplotsizeaspect 参数控制。它们对应于每个 facet 的大小(“size”实际上表示“高度”,然后size * aspect 给出宽度),所以如果您的目标是为整个图形设置一个特定的大小'将需要从那里向后工作。

【讨论】:

我第一天使用 matplotlib 和 Seaborn,为这个愚蠢的问题道歉,但是如果不控制图形的大小,mpl.rc("figure", figsize=(45, 10)) 有什么好处呢?我还看到了这里使用的相同 mpl.rc 代码:github.com/mwaskom/seaborn/issues/112 — 它不会改变我的绘图中的大小。【参考方案7】:
    不要使用%pylab inline,它已被弃用,使用%matplotlib inline 该问题并非特定于 IPython。 使用 seaborn .set_style 函数,将你的 rc 作为第二个参数或 kwarg 传递给它。:http://web.stanford.edu/~mwaskom/software/seaborn/generated/seaborn.set_style.html

【讨论】:

以上是关于如何使用 seaborn factorplot 更改图形大小的主要内容,如果未能解决你的问题,请参考以下文章

在seaborn factorplot中旋转标签文本

用 Pandas 上的值注释条形图(在 Seaborn factorplot 条形图上)

删除 Seaborn 条形图图例标题

如何使用 seaborn FacetGrid 更改字体大小?

将 seaborn 情节图例移动到不同的位置

在 Seaborn 中设置绘图背景颜色