Matplotlib savefig с eps не рисует линии сетки в плоскости проекции на трехмерном графике
В 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)
1 ответ
Ну, 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, и результаты выглядели ближе к опубликованному вами изображению.