Matplotlib savefig с eps не рисует линии сетки в плоскости проекции на трехмерном графике - PullRequest
0 голосов
/ 19 сентября 2018

В Matplotlib я хочу нарисовать линии сетки во всех плоскостях проекции на трехмерном графике в файле EPS.Я написал код ниже.Код работает как нужно в окне рисунка и в файле 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)

PNG file EPS file

1 Ответ

0 голосов
/ 19 сентября 2018

Хорошо, 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, вы увидите, что плоскость нарисована в гораздо более темном оттенке серого, и линии сетки теперь легко видны.

Iпонятия не имею, можно ли это изменить в matplotlib, но именно здесь генерируются значения серого, в EPS нет ничего плохого.Из PNG, который вы создали непосредственно, похоже, что значения серого, выбранные для плоскостей, слишком темные, и в этом ваша проблема.

В качестве эксперимента я попытался изменить 3 значения серого, используемые для рисованияплоскости от 0,950, 0,900 и 0,925 до 0,975, 0,945 и 0,960, и результаты выглядели ближе к опубликованному вами изображению.

...