当我使用.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'
谢谢!