Поэтому я пытаюсь сохранить фигуру, используя Mayavi. Код показан ниже.
mlab.figure(1, bgcolor=(1, 1, 1), fgcolor=(0.5, 0.5, 0.5))
mlab.contour3d(i, a, d, abs(ber), contours=10, opacity=0.5, colormap='hot')
mlab.outline()
mlab.colorbar(orientation='vertical')
mlab.axes(color=(0.5,0.5,0.5), line_width=4, xlabel='I', ylabel='A', zlabel='D')
mlab.move(forward=-4, right=-4)
mlab.savefig('abc.png', figure=mlab.gcf(), magnification=2)
mlab.show()
Данные отображаются на экране нормально. Например:
Но когда я делаю savefig()
, к сожалению, возникает проблема. Я получаю пустую фигуру. Я даже пытался сделать screenshot()
и построить это с помощью pylab.imshow()
, но это тоже оказалось пустым. Я даже пытался сохранить напрямую кнопкой сохранения в окне mlab, и даже это дает пустое изображение!
Я уже проверил [ mayavi mlab.savefig() дает пустое изображение ] но, похоже, это не помогает.
Я начинаю подозревать, что проблема в бэкэнде. Я использую wxPython в системе Windows 7 с бэкэндом Qt. Я также пробовал почти все бэкенды, которые у меня были, даже с обычной неинтерактивной консолью, и это не сработало.
У кого-нибудь есть опыт в этом??
savefig()
просто делает снимок экрана прямо с экрана. Бэкэнд выводит изображение на экран. Если есть несоответствие между процессом захвата и процессом отображения, то изображение не будет захвачено. Я уже видел это при захвате видео, когда программа рендерит напрямую, используя прямой доступ к оборудованию. При увеличении = 2 я вижу, что экран увеличивает изображение и выполняет захват, но все данные равны 0. Я думаю, может быть, что-то вроде этого происходит. Хотя не уверен. - person ssm   schedule 04.02.2014magnification=1
? - person aestrivex   schedule 04.02.2014magnification=1
ничего не меняет. Изначально у меня не было этого параметра. Я поставилmagnification=2
просто как дополнительную проверку... - person ssm   schedule 04.02.2014