Настройка соотношения сторон 3D-графикаPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Настройка соотношения сторон 3D-графика

Сообщение Anonymous »

Я пытаюсь построить трехмерное изображение морского дна на основе данных гидролокатора, пройденного по участку морского дна размером 500 на 40 метров. Я использую matplotlib/mplot3d с Axes3D и хочу иметь возможность изменять соотношение сторон осей, чтобы оси x и y масштабировались. Пример скрипта с сгенерированными данными, а не с реальными данными:

Код: Выделить всё

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')
И выходное изображение из этого скрипта:

Изображение


Теперь хотелось бы изменить так, чтобы 1 метр в продольном направлении (x) ось такая же, как 1 метр по оси диапазона (y) (или, возможно, другое соотношение в зависимости от относительных размеров). Я также хотел бы установить соотношение оси Z, опять же не обязательно 1:1 из-за относительных размеров данных, но чтобы ось была меньше текущего графика.
Я попробовал создать и использовать эту ветку matplotlib, следуя примеру сценария в этом сообщении из списка рассылки, но добавив строку ax.pbaspect = [1.0, 1.0, 0.25] в свой скрипт (удалив «стандартную» версию matplotlib, чтобы убедиться, что используется пользовательская версия) не оказал никакого влияния на сгенерированное изображение.

Изменить : Таким образом, желаемый результат будет выглядеть примерно так (грубо отредактировано с помощью Inkscape). В этом случае я не установил соотношение 1:1 по осям x/y, потому что оно выглядит до смешного тонким, но я раздвинул его так, чтобы оно не было квадратным, как в исходном выводе.

Изображение


Подробнее здесь: https://stackoverflow.com/questions/103 ... of-3d-plot
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»