我正在努力保存 matplotlib 中没有背景和边框的绘图。
- 首先,我想要导出两种格式:
- svg 格式,只包含绘图线条 (无背景、轴、框架或边框)
- png 格式,具有透明背景并将边界框完全适配绘图。
- 为了更加精确,我给出一个示例。
i = 1000
j = 1024
periods = 6
x = np.array([np.linspace(0, (2 * (periods) * np.pi), i)]).T
x = np.repeat(x, j, axis=1)
n = (1 * (np.random.normal(size=(j))) *
np.random.uniform(low=1, high=1, size=j))[:, np.newaxis]
n = np.repeat(n, i, axis=1).T
y = np.sin(x) * (np.sin(n)+4) + 0.5 * n**2
xout = np.array([np.linspace(0, 2 * (2 * (periods) * np.pi), 2 * i)]).T
xout = np.repeat(xout, j, axis=1)
yout = np.concatenate((y, y[::-1]))
f1 = plt.figure("GOOD1")
plt.axis('off')
plt.plot(x, y, 'b', alpha=(0.015625))
plt.savefig("GOOD1.svg", bbox_inches='tight', transparent=True)
plt.savefig("GOOD1.png", bbox_inches='tight', transparent=True)
这看起来与我想要导出的内容相似,但是在png和svg图像中仍然有一个小空间;svg还具有背景。
第二个问题是关于alpha通道的。 我了解它被限制为8位,因此将alpha值降低得更多(如0.005)将使图形消失。 参考以前的代码,是否有一种方法可以以增加透明度的方式绘制更多的线条,而不会完全失去图形?
ax.set_position
函数以 (left, bottom, width, height) 的格式设置 figure 坐标系中的坐标位置,因此在这里我们将坐标轴的位置设置为图形的左下角并填充整个图形。设置坐标轴限制确保跟踪填充整个坐标轴。将图形和坐标轴补丁设置为 alpha 0 可使背景透明化,同时适用于图形和坐标轴。最后,也可能是最重要的,将 bbox_inches 设置为 0 可使输出没有边框。 - Peter