неправильное соотношение сторон графика поверхности python mayavi

Я пытаюсь научиться использовать Mayavi для построения трехмерных данных. Моя сетка xy обычно выглядит так

import numpy 
from mayavi import mlab
x,y = numpy.mgrid[0:90:3j, 0:360:3j]
z= #some calculation
mlab.surf(x, y, z)
mlab.show()

сюжет выглядит как

введите описание изображения здесь

а сюжет с использованием gnuplot выглядит так

введите описание изображения здесь

Итак, изображение Mayavi не имеет правильного соотношения сторон. Как правильно построить данные с помощью Mayavi?


person Eular    schedule 15.04.2019    source источник
comment
минимальный рабочий пример поможет выяснить разницу между двумя плоттерами.   -  person Felipe Lema    schedule 16.04.2019


Ответы (2)


Вы можете решить эту проблему, используя параметр extent следующим образом

import numpy 
from mayavi import mlab
x,y = numpy.mgrid[0:90:3j, 0:360:3j]
z= #some calculation
mlab.surf(x, y, z, extent=(0,1,0,1,0,1))
mlab.show()
person jriege    schedule 08.05.2019

Горизонтальная плоскость, генерируемая gnuplot, создает ось, охватывающую диапазон 0-90, которая выглядит как минимум такой же длины, как перпендикулярная ось, охватывающая диапазон 0-400. Принимая во внимание этот факт, я бы сказал, что gnuplot на самом деле тот, для которого соотношение сторон неправильное, учитывая, что вашей целью было бы иметь что-то похожее на вызов matplotlib ax.set_aspect('equal', adjustable='box'). Кроме того, surf имеет ключевое слово warp_scale, которое позволяет производить вертикальное преувеличение. Документация здесь.

person Patol75    schedule 02.05.2019