Настройка формата изображения 3D-графика
Я пытаюсь построить трехмерное изображение морского дна по данным гидролокатора, пролегающего над участком морского дна размером 500 на 40 метров. Я использую matplotlib / mplot3d с Axes3D, и я хочу иметь возможность изменить соотношение сторон осей, чтобы x & amp; Ось Y в масштабе. Пример сценария с сгенерированными данными, а не с реальными данными:
<code>import matplotlib.pyplot as plt from matplotlib import cm from mpl_toolkits.mplot3d import Axes3D import numpy as np # Create figure. fig = plt.figure() ax = fig.gca(projection = '3d') # Generate example data. R, Y = np.meshgrid(np.arange(0, 500, 0.5), np.arange(0, 40, 0.5)) z = 0.1 * np.abs(np.sin(R/40) * np.sin(Y/6)) # Plot the data. surf = ax.plot_surface(R, Y, z, cmap=cm.jet, linewidth=0) fig.colorbar(surf) # Set viewpoint. ax.azim = -160 ax.elev = 30 # Label axes. ax.set_xlabel('Along track (m)') ax.set_ylabel('Range (m)') ax.set_zlabel('Height (m)') # Save image. fig.savefig('data.png') </code>
И выводим изображение из этого скрипта:
Теперь я хотел бы изменить его так, чтобы 1 метр по оси вдоль траектории (x) был таким же, как 1 метр по оси диапазона (y) (или, возможно, другое соотношение в зависимости от используемых относительных размеров). Я также хотел бы установить отношение оси z, опять же не обязательно к 1: 1 из-за относительных размеров данных, но так, чтобы ось была меньше текущего графика.
Я пытался строить и использоватьэта ветка матплотлиб, следуя примеру сценария вэто сообщение из списка рассылки, но добавивax.pbaspect = [1.0, 1.0, 0.25]
строка в мой сценарий (удаление «стандартной» версии matplotlib, чтобы убедиться, что используется пользовательская версия) не имеет никакого значения для сгенерированного изображения.
Edit: Таким образом, желаемым результатом будет что-то вроде следующего (грубо отредактированного с помощью Inkscape) изображения. В этом случае я не установил соотношение 1: 1 для осей x / y, потому что оно выглядит смехотворно тонким, но я разложил его так, чтобы оно не было квадратным, как на исходном выходе.