mlab savefig не записва изображение

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

Някой има ли опит с това??


person ssm    schedule 03.02.2014    source източник
comment
Ако приемем, че въвеждам някои произволни данни за вашите данни, кодовият фрагмент, който имате, ми работи добре. Какво точно имате предвид с това, че използвам wxPython ... с бекенд на Qt   -  person aestrivex    schedule 04.02.2014
comment
Доколкото разбирам, функцията savefig() просто прави екранна снимка директно от екрана. Бекендът показва изображението на екрана. Ако има несъответствие между процеса на заснемане и процеса на показване, тогава изображението няма да бъде заснето. Виждал съм това при заснемане на видео преди, където програмата изобразява директно чрез директен достъп до хардуера. При увеличение = 2 виждам, че екранът увеличава изображението и прави заснемане, но всички данни са 0. Мисля, че може би нещо подобно се случва. Не съм сигурен обаче.   -  person ssm    schedule 04.02.2014
comment
да Но ако използвате wxpython, тогава бих си представил, че ще използвате wx бекенда. (Освен ако не се опитвате да кажете, че имате прозорец на mayavi, използвайки бекенда на Qt, вграден в приложение wxpython?) Вероятно не мога да ви помогна, но какво ще стане, ако направите magnification=1?   -  person aestrivex    schedule 04.02.2014
comment
Всъщност моят wxPython идва с редица предварително конфигурирани конзоли, една от тях използва бекенда на Qt. Пише IPython (Qt). Така че това е, което използвам за стартиране на програмата. Обикновено използвам това, защото бекендът по подразбиране wx създава проблеми с взаимодействието с pylab. Това не би трябвало да се случва, но се случва. Нещо се е объркало с инсталацията ми! Ще опитам да направя чиста преинсталация и ще видя дали това ще помогне.   -  person ssm    schedule 04.02.2014
comment
magnification=1 не променя нищо. Първоначално нямах този параметър. Сложих magnification=2 просто като допълнителна проверка ...   -  person ssm    schedule 04.02.2014
comment
Съжалявам, когато казах wxPython, наистина имах предвид Python(x,y). Наистина съжалявам за объркването. По лошо.   -  person ssm    schedule 04.02.2014


Отговори (1)


Тук проблемът е решен mayavi mlab.savefig() дава празно изображение

простият отговор: „Това вероятно е същият проблем, който произтича само от използването на matplotlib, най-добрият вариант вероятно е да запазите, преди да покажете.“

person sfg    schedule 01.04.2015
comment
дори ако връзката съдържа отговора. това помага да се копират сърцевината или най-важните части с въпроса - person MZaragoza; 01.04.2015
comment
Благодаря. При преинсталиране на моята дистрибуция на Python (по различни причини) този проблем изглежда е изчезнал. Не знам какъв точно беше проблема, но вече го няма. Благодаря все пак за предложението. - person ssm; 02.04.2015