【问题标题】:Matplotlib figure facecolor (background color)Matplotlib 图形 facecolor(背景色)
【发布时间】:2011-06-15 19:07:13
【问题描述】:

谁能解释一下为什么下面的代码在设置图形的facecolor时不起作用?

import matplotlib.pyplot as plt

# create figure instance
fig1 = plt.figure(1)
fig1.set_figheight(11)
fig1.set_figwidth(8.5)

rect = fig1.patch
rect.set_facecolor('red') # works with plt.show().  
                          # Does not work with plt.savefig("trial_fig.png")

ax = fig1.add_subplot(1,1,1)

x = 1, 2, 3
y = 1, 4, 9
ax.plot(x, y)

# plt.show()  # Will show red face color set above using rect.set_facecolor('red')

plt.savefig("trial_fig.png") # The saved trial_fig.png DOES NOT have the red facecolor.

# plt.savefig("trial_fig.png", facecolor='red') # Here the facecolor is red.

当我使用fig1.set_figheight(11) fig1.set_figwidth(8.5) 指定图形的高度和宽度时,这些由命令plt.savefig("trial_fig.png") 拾取。但是,facecolor 设置没有被拾取。为什么?

感谢您的帮助。

【问题讨论】:

    标签: python matplotlib


    【解决方案1】:

    这是因为savefig 覆盖了人物背景的面部颜色。

    (这是故意的,实际上...假设您可能希望使用facecolor kwarg 到savefig 来控制已保存图形的背景颜色。不过,这是一个令人困惑且不一致的默认值! )

    最简单的解决方法就是执行fig.savefig('whatever.png', facecolor=fig.get_facecolor(), edgecolor='none')(我在此处指定边缘颜色,因为实际图形的默认边缘颜色是白色,这将为您在保存的图形周围提供白色边框)

    希望有帮助!

    【讨论】:

      【解决方案2】:

      我必须使用 transparent 关键字来获得我最初选择的颜色

      fig=figure(facecolor='black')
      

      像这样:

      savefig('figname.png', facecolor=fig.get_facecolor(), transparent=True)
      

      【讨论】:

      • 如果您提供facecolor,为什么还要使用transparent=True
      【解决方案3】:

      savefig 有自己的 facecolor 参数。 我认为比公认的答案更简单的方法是将它们全局设置一次,而不是每次都设置facecolor=fig.get_facecolor()

      plt.rcParams['axes.facecolor']='red'
      plt.rcParams['savefig.facecolor']='red'
      

      【讨论】:

        猜你喜欢
        • 2014-08-23
        • 2011-07-14
        • 2021-10-14
        • 2021-09-30
        • 2020-07-16
        • 2021-05-20
        • 1970-01-01
        相关资源
        最近更新 更多