gpt4 book ai didi

python - 将绘图另存为 jpeg 时出现像素化字体

转载 作者:行者123 更新时间:2023-11-28 17:32:37 24 4
gpt4 key购买 nike

当我将 matplotlib 图保存为 jpeg 时,刻度字体被像素化。我不确定发生了什么,或者是否有任何黑客可以解决这个问题。有没有人有任何见解?

%matplotlib nbagg

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-1.2,1.2,1000,endpoint=True)
y = np.copy(x)

x,y = np.meshgrid(x,y)
z = -x**2 + y**2 - y**3

fig = plt.figure()

ax = fig.add_subplot(111)

CS = plt.contour(x,y,z, [0,-0.1,0.1], colors=['black','blue', 'gray'])
plt.clabel(CS, fontsize=14, inline=1, fmt='%1.1f', manual=[(-0.15,0), (-0.4,0), (0.25,0.5)])

plt.savefig('plot.png', format='png')
plt.savefig('plot.jpg', format='jpg')
plt.savefig('plot.tiff', format='tiff')

这里是 plot.png:

enter image description here

这是 plot.jpg:

enter image description here

这是 plot.tiff:

enter image description here

我相信这与我之前的一个问题有关:Anti-aliased Fonts in Animations

最佳答案

如上所述,这种情况的出现取决于所使用的后端。您可以使用以下方法避免此问题:

import matplotlib
matplotlib.use('webagg')

相对于:

%matplotlib nbagg

我认为这个问题与 PIL 试图保存具有透明度的图形的 jpeg 有关。如果您坚持使用 nbagg,那么如果您设置:

matplotlib.rcParams['nbagg.transparent'] = False

您的 jpeg 图像字体不会被像素化,并且看起来与问题中显示的 png 和 tiff 文件几乎相同。不幸的是使用了 rcParams:

matplotlib.rcParams['savefig.transparent'] = False

是不够的。似乎“savefig.transparent”rcParam 将控制图中绘图的透明度,“nbagg.transparent”将控制图外的透明度(即:轴、刻度、标题等)。在保存为不支持透明度的文件格式时,确保后端强制 transparency = False 可能是一项简单的工作。

其他一些后端可能不支持透明度,这就是为什么它似乎可以在您更改后端时解决问题。

我会将此作为错误报告给 github。

关于python - 将绘图另存为 jpeg 时出现像素化字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33283274/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com