【问题标题】:changing size of seaborn plots and matplotlib library plots in a common way以通用方式更改 seaborn 绘图和 matplotlib 库绘图的大小
【发布时间】:2017-10-17 12:57:55
【问题描述】:
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


    【解决方案1】:

    无法通过 rcParams 更改 factorplot 的图形大小。

    图大小为hardcoded inside the FacetGrid class

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

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

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

    seaborn argues here 的作者认为这是因为因子图需要完全控制图形。

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

    【讨论】:

      【解决方案2】:

      可以通过首先创建一个图形和轴并将其作为参数传递给 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 将自动创建另一个图形。一种解决方法是关闭空的第二个图形。

      【讨论】:

        猜你喜欢
        • 2020-03-11
        • 2022-01-04
        • 2021-05-12
        • 2021-04-17
        • 2018-07-28
        相关资源
        最近更新 更多