Matplotlib savefig с eps не рисует линии сетки в плоскости проекции на трехмерном графике

1

В 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)

Изображение 174551 Изображение 174551

  • 0
    Вы должны разместить EPS где-нибудь в открытом доступе и опубликовать URL здесь. Скорее всего, это проблема с созданием EPS, хотя на самом деле это не вопрос программирования EPS.
  • 0
    Спасибо за ваш комментарий. Я загрузил файл EPS в openload .
Теги:
matplotlib
3d
eps

1 ответ

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

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

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

  • 0
    Большое спасибо за вашу большую помощь! Я надеюсь, что Matplotlib решит эту проблему принципиально.
  • 0
    Если вы столкнулись с ошибкой в matplotlib, вы можете сообщить об этом на трекере .

Ещё вопросы

Сообщество Overcoder
Наверх
Меню