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

问题描述 投票:1回答:2
from pylab import rcParams
rcParams['figure.figsize'] = (10, 10)

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

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

我必须每次指定大小,方面。

请建议一些适用于全球的东西。

python python-2.7 matplotlib seaborn
2个回答
0
投票

不可能通过rcParams改变factorplot的数字大小。

数字大小为hardcoded inside the FacetGrid class as

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

然后使用此figsize创建一个新图。

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

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

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


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将自动创建另一个数字。解决方法是关闭空的第二个数字。

© www.soinside.com 2019 - 2024. All rights reserved.