python - 带 eps 的 Matplotlib savefig 不会在 3D 绘图上的投影平面中绘制网格线

标签 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

最佳答案

嗯,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,结果看起来更接近您发布的图像。

关于python - 带 eps 的 Matplotlib savefig 不会在 3D 绘图上的投影平面中绘制网格线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52402745/

相关文章:

python /Django : Are there any decorators to tell that input is not none?

python - Scrapy python csv 输出在每行之间有空行

python - Django 版本 : incompatible version data during field_dict access

python - 如何添加将显示来自 2 个不同子图的数据的单个 colobar

python - 将 Matplotlib 图转换为没有任何边框/框架或轴的 NumPy 数组

java - 在 libgdx 中批处理多维数据集时出现问题

javascript - 在 three.js 中将向量从全局空间转换为局部向量

python - 使用 pip3 安装软件包时出现 "ssl module in Python is not available"

python - 是否可以有多个字幕?

r - 在R中绘制多个不同尺寸和坐标的3D框