Така че се опитвам да запазя фигура с помощта на 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