具有eps的Matplotlib savefig不会在3d图上的投影平面上绘制网格线

时间:2018-09-19 09:37:10

标签: python matplotlib 3d eps

在Matplotlib中,我想在EPS文件的3d图上的所有投影平面上绘制网格线。
我写了下面的代码。 该代码可在图形窗口和PNG文件上按预期工作,而在EPS文件上则无法工作。
在EPS文件中,网格线未绘制到三个投影平面之一中。 我粘贴了创建的PNG文件(顶部)和EPS文件(向下,我无法在该页面粘贴.eps。因此,我粘贴了转换后的图像。我将EPS文件上传到了here (openload)。)。
有什么办法可以解决这个问题?

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

fig1 = plt.figure()
ax1 = fig1.gca(projection='3d')
ax1.set_aspect("equal")
ax1.view_init(elev=30., azim=40)

fileid="test"
path="C:..."
fig1.savefig(path+fileid+".eps", dpi=300)
fig1.savefig(path+fileid+".png", dpi=300)

PNG file EPS file

1 个答案:

答案 0 :(得分:2)

EPS 确实绘制网格线。问题在于它为它们绘制的颜色与平面的平面填充相同。

如果使用文本编辑器打开EPS文件,并转到第261行,则会看到:

0.900 setgray
gsave
288.863762 206.238981 m
165.545964 132.223634 l
158.321608 301.489923 l
288.311228 367.946472 l
gsave
fill

如果将0.900 setgray更改为0.25 setgray,然后渲染EPS,您将看到以深得多的灰色阴影绘制了平面,现在可以轻松看到网格线。

我不知道是否可以在matplotlib中进行更改,但是那是生成灰度值的地方,EPS没错。从您直接创建的PNG中,“看起来”为飞机选择的灰度值太暗,这就是问题所在。

作为一个实验,我尝试将用于绘制平面的3个灰度值从0.950、0.900和0.925更改为0.975、0.945和0.960,结果看起来更接近于您发布的图像。