将matplotlib曲面图保存为.pdf时别名

时间:2017-02-06 13:24:22

标签: python matplotlib

当我使用.pdf将一个三维表面图保存到linewidth=0时,我仍然可以看到一些白线,当以pdf格式显示时,它会显示我的最终输出。

我坚信这是由抗锯齿引起的,所以我尝试antialiased=False,正如其他人所建议的那样。它适用于光栅图像,但pdf图像仍显示这些线条。

幸运的是,我找到了一个类似轮廓here的问题,其中包括:

for c in cnt.collections:
    c.set_edgecolor("face")

这个答案看起来很有希望,但对于3d绘图,对象Poly3DCollection没有属性collections

是否有针对3d绘图的解决方法?我在Python中没有足够的熟练程度,但我想知道collections的类似属性是否会成为答案

重现此问题的代码:

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure()
ax = Axes3D(fig)
x = np.linspace(-5, 5, 100)
y = np.linspace(-5, 5, 100)
x, y = np.meshgrid(x, y)
z = x**2 + y**2
s = ax.plot_surface(x, y, z, rstride = 1, cstride = 1, cmap='gray', linewidth=0, antialiased=False)
plt.savefig("3d.pdf")

使用collections时出错:

AttributeError: 'Poly3DCollection' object has no attribute 'collections'

谢谢!

0 个答案:

没有答案