以一种常见的方式改变seaborn图和matplotlib库图的大小

时间:2017-05-17 21:58:08

标签: python python-2.7 matplotlib seaborn

from pylab import rcParams
rcParams['figure.figsize'] = (10, 10)

这适用于直方图,但不适用于因子图。 sns.factorplot(.....)仍显示默认大小。

sns.factorplot('Pclass','Survived',hue='person',data = titanic_df,size = 6,aspect =1)

我必须每次都指定尺寸,方面。

请建议一些适用于全球的内容。

2 个答案:

答案 0 :(得分:0)

无法通过rcParams更改factorplot的数字大小。

数字大小为hardcoded inside the FacetGrid class

figsize = (ncol * size * aspect, nrow * size)

然后使用此figsize创建新图。

这使得无法通过函数调用factorplot中的参数之外的其他方式更改数字大小。这使得首先用其他参数创建一个图形并将该事实图绘制到该图中也是不可能的。但是,对于具有单轴的factorplot的解决方法,请参阅@MartinEvans' answer

seaborn argues here的作者,这是因为一个factorplot需要完全控制这个数字。

虽然人们可能会质疑是否需要这样,但除了(a)在GitHub site添加功能请求和/或编写自己的包装器之外,您无能为力。考虑到seaborn和matplotlib都是开源的,它太难了。

答案 1 :(得分:0)

可以通过首先创建一个图形和轴并将其作为参数传递给seaborn图来修改图形大小:

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

fig, ax = plt.subplots(figsize=(10, 10))

df = pd.DataFrame({
    'product' : ['A', 'A', 'A', 'B', 'B', 'C', 'C'], 
    'close' : [1, 1, 0, 1, 1, 1, 0],
    'counts' : [3, 3, 3, 2, 2, 2, 2]})

sns.factorplot(y='counts', x='product', hue='close', data=df, kind='bar', palette='muted', ax=ax)
plt.close(2)    # close empty figure
plt.show()

使用Axis grids类型的情节时,seaborn会自动创建另一个数字。解决方法是关闭空的第二个数字。