【问题标题】:Why plt.figure(figsize=(w,h)) has no effect on df.barh() but plt.rcParams['figure.figsize'] = [w,h] does?为什么 plt.figure(figsize=(w,h)) 对 df.barh() 没有影响,但 plt.rcParams['figure.figsize'] = [w,h] 会?
【发布时间】:2019-03-08 11:49:02
【问题描述】:

我似乎无法在 Matplotlib 或在线任何地方找到答案

plt.figure(figsize=(15,20))
df.plot.barh()

不改变绘图大小。我必须改用这个

plt.rcParams['figure.figsize'] = [15, 20]
df.plot.barh()

有人能解释一下plt.figureplt.rcParams 之间的区别吗?

plt.rcParams['figure.figsize'] = [w,h]使用后如何在jupyter notebook中将其效果重置为原来的大小?我试过plt.rcdefaults(),但默认的图形尺寸还是大得多?

谢谢

【问题讨论】:

    标签: python matplotlib plot jupyter-notebook


    【解决方案1】:

    如果没有明确传递给barh,它似乎会创建一个新的图形和轴。因此,当您执行 plt.figure(figsize=(15,20)) 时,您正在创建一个图形,但从未使用它。

    plt.rcParams['figure.figsize'] = [15, 20] 影响所有数字。

    一种解决方案是创建图形和轴并将其作为参数传递

    fig, ax = plt.subplots(figsize=(15,20))
    df.plot.barh(ax=ax)
    

    或者,barh 有一个可以使用的figsize 参数。因此,不要事先创建图形,只需这样做

    df.plot.barh(figsize=(15,20))
    

    【讨论】:

    • 你是对的(source)。您会在 pandas 绘图模块中看到 ax 默认为 None。如果在设置过程中检测到 None ,它将创建一个图形。
    • plt.rcdefaults() 对我有用(只要您没有在其他地方设置当前图形的图形大小)
    • 感谢@DavidG。那么如何将df.plot.barh(figsize=(15,20))恢复到默认大小呢?
    • 你的意思是一旦图被创建了,如何改变大小?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-04
    • 1970-01-01
    • 2013-03-06
    • 2020-12-15
    • 1970-01-01
    • 2020-04-01
    • 1970-01-01
    相关资源
    最近更新 更多