我似乎无法让savefig()
在没有透明图形背景的情况下实际保存PNG文件。
这是阅读和尝试了所有以前发布的建议,回答,诅咒,也通过API文档很多次。都看了,还是得不到不透明的人物脸
我正在使用matplotlib和savefig创建一个PNG文件。(环境:macos-使用PY 3.7的最新anaconda模块)。
然而,我正在jupyter中尝试这个——所以希望它不是完全搞砸的东西,只是jupyter中的ipython是如何做到的——尽管我不明白这是怎么回事
我确实通读了之前的许多关于Savefig做自己的事情的性质(令人困惑的地狱)的帖子,并按照建议做了/尝试了一切(以及最新的Savefig api文档中写的)。
特别是,我尝试了以下所有方法,但都没有成功:
保存图时,我的图形背景始终是透明的。
有人能告诉我这是什么吗我在这里失踪了???
这是我正在使用的,无论我做什么,它都会以透明的背景吐出图形。
特别是下面的第二次调用(使用savefig(…,transparent=False)
)将使轴不透明-但图形本身仍然是透明的!)
import numpy as np
import matplotlib as mpl
import matplotlib.style as style
a = np.array([-3.2, 0.1, 1.5, 3.3, 8.5])
b = np.array([1.1, 1.8, 1.95, 2.3, 4.3])
labels = ['a', 'bc', 'def', 'g', 'ggghhh']
stylefile = './util/plot_config/aqs_default.mplstyle'
# the file above does contain an entry of:
# savefig.facecolor: white
#
to_res = 1024
dpi = 100
inches = (to_res/dpi, to_res/dpi)
style.use(stylefile)
%matplotlib
fig = mpl.figure.Figure(figsize=inches, dpi=dpi, facecolor='white')
ax = fig.subplots()
for x, y, l in zip(a,b,labels):
ax.scatter(x,y,label=l)
ax.legend()
ax.set_xlabel('Some x')
ax.set_ylabel('Attenuation $\mu$ (cm$^{-1}$)')
ax.set_title('blah', y=1.03)
fig.suptitle('Linearity $\mu$')
# for me, _both_ calls below result in the figure having a transparent background:
fig.savefig('a.png', facecolor=fig.get_facecolor(), transparent=True)
fig.savefig('b.png', facecolor=fig.get_facecolor(), transparent=False)
供任何有类似问题的人参考。
原因(和修复)原来是因为我正在创建一个将frameon
设置为False
的图形。实际上,我在使用的样式文件中将此设置为False。
将frameon
更改为True修复了该问题。
这一点令人困惑,从任何文档中都看不出很明显——以下是有关MPL github问题的一些背景信息:https://github.com/matplotlib/matplotlib/issues/14339
不幸的是,从matplotlib 3.3开始,似乎不再支持frameon
。
我解决了透明度的问题,通过设置facecolor='白色',透明=False
选项在saefig()
通过使用启用透明背景功能,可以使用自定义图片作为背景。 controller.setTransparentBackground( true );
我在这里的要求是使我的孩子突出,而没有的白色背景-(因此AnchorPane需要透明),我如何实现这一点?
问题内容: 我正在使用类似于以下代码的内容: 我希望这可以使背景的不透明度为0.4,文本的不透明度为100%。相反,它们都具有0.4的不透明度。 问题答案: 儿童遗传不透明。如果他们不这样做,那将会很奇怪和不便。 您可以为背景图像使用半透明的PNG文件,也可以为背景颜色使用RGBa(alpha表示)颜色。 例如,50%的黑色背景褪色:
问题内容: 我有一个JLabel,可以在鼠标输入时更改其背景颜色。我的问题是我希望JLabel在鼠标退出后变得透明。 有没有我可以用来完成此任务的声明? 问题答案: 在德国,这是一个懒惰的假期,因此结合以下两个答案: 问题(实际上,我倾向于将其视为错误)是设置opaque属性不会触发适当的重绘。JComponent触发了change事件,但似乎没人在听:
问题内容: 我有一个带有标签的窗口作为框架。我这样做是因为我想要背景图像。但是现在我在使用其他标签时遇到了麻烦。我用来实际标记事物的其他标签没有透明的背景。有没有办法使这些标签的背景透明? 问题答案: Tk中的透明背景不支持此功能。
我遇到了让情节本身透明的方法,但是我如何让背景透明呢?没有Qt有办法做到这一点吗?我希望情节在背景窗口上,例如,假设我正在运行Chrome,我希望情节在chrome窗口上,其内容可见。