首页 > 解决方案 > 带有 eps 的 Matplotlib savefig 不会在 3d 图上的投影平面中绘制网格线

问题描述

在 Matplotlib 中,我想在 EPS 文件的 3d 图上的所有投影平面上绘制网格线。
我写了下面的代码。代码在图形窗口和 PNG 文件上按需要工作,但在 EPS 文件上不工作。
在 EPS 文件中,网格线不会绘制到三个投影平面之一。我粘贴了创建的PNG文件(顶部)和EPS文件(向下,我无法在此页面中粘贴.eps。因此,我粘贴了转换后的图像。我将EPS文件上传到这里(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)

文件 EPS文件

标签: pythonmatplotlib3deps

解决方案


好吧,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 setgray0.25 setgray然后渲染 EPS,您将看到平面以更暗的灰色阴影绘制,并且网格线现在很容易看到。

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

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


推荐阅读