当前位置: 首页 > 面试题库 >

Matplotlib图facecolor(背景色)

司寇嘉茂
2023-03-14
问题内容

有人可以解释一下设置图形的面色时为什么下面的代码不起作用吗?

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设置。为什么?

谢谢你的帮助。


问题答案:

这是因为savefig覆盖图形背景的面色。

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

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

希望有帮助!



 类似资料:
  • 问题内容: 根据matplotlib的散点图示例,如何更改3轴网格平面的灰色背景颜色?我想将其设置为白色,使网格线保持默认的灰色。我发现了这个问题,但无法将其应用于示例。谢谢。 问题答案: 使用相同的示例。您可以使用http://matplotlib.org/mpl_toolkits/mplot3d/api.html#axis3d中所述的方法设置窗格颜色。您可以使用RGBA元组设置颜色:

  • 问题内容: 如果选择了该面板(单击该面板),则该面板的颜色为蓝色。另外,我在该面板上添加了一个小标志(图像),它表示所选面板之前已被选中。 因此,如果用户看到例如10个面板,其中有4个带有这个小标记,则他知道自己之前已经单击了这些面板。到目前为止,这项工作还不错。现在的问题是我无法显示小标志并使面板同时变为蓝色。 我使用css将面板设置为蓝色,使用设置背景图像。但是背景色似乎在图像上方,因此您看不

  • 我似乎无法让在没有透明图形背景的情况下实际保存PNG文件。 这是阅读和尝试了所有以前发布的建议,回答,诅咒,也通过API文档很多次。都看了,还是得不到不透明的人物脸 我正在使用matplotlib和savefig创建一个PNG文件。(环境:macos-使用PY 3.7的最新anaconda模块)。 然而,我正在jupyter中尝试这个——所以希望它不是完全搞砸的东西,只是jupyter中的ipyt

  • 我遇到了让情节本身透明的方法,但是我如何让背景透明呢?没有Qt有办法做到这一点吗?我希望情节在背景窗口上,例如,假设我正在运行Chrome,我希望情节在chrome窗口上,其内容可见。

  • 问题内容: 我为设置背景图片有一个小问题。 这是我在网站上获得的html: 这是CSS: 我不知道为什么按钮的背景仍然是白色。 问题答案: 令人惊讶的是,这里没有答案解决或提及实际问题。 该CSS选择器说:“给我一个元素与ID 里面 一个元素”,就像这样: 但是,您想要的是 带有* id 的元素。而选择器将是(请注意 button 和 #rock 之间缺少的空间)。 * 正如@Greg已经提到的:

  • 问题内容: 我有一个。当用户悬停div时,我想用rgba颜色()覆盖背景图像。 我想知道是否有一个一格解决方案(即没有多个div,一个用于图像,一个用于颜色,等等)。 我尝试了多种方法: 而这个CSS: 我看到的唯一选择是制作另一个具有覆盖层的图像,使用JavaScript预加载然后使用。但是,我想要一个仅CSS的解决方案(更整洁;更少的HTTP请求;更少的硬盘)。有没有? 问题答案: Peter