Страницы

Поиск по вопросам

воскресенье, 9 июня 2019 г.

Угол отображения 3d графиков

Графики выглядят как изометрическая проекция, что не очень удобно для оценки того, что происходит по оси delay. Для сравнения "на глаз" было бы хорошо, чтобы ось delay находилась параллельно плоскости монитора, а accum periods перпендикулярно. Как прописать в коде угол, под которым отображаются графики?

x = np.arange (0, 64, 1) y = np.arange (0, aver, 1) xgrid, ygrid = np.meshgrid(x, y) zgrid = ifft_data x, y, z = xgrid,ygrid,zgrid fig = pylab.figure() axes = Axes3D(fig) axes.plot_surface(x, y, z) plt.xlabel('delay') plt.ylabel('accumulation periods') pylab.show()


Ответ

Воспользуйтесь ax.view_init(ax.elev, ax.azim)
Пример:
from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as plt from matplotlib import cm import numpy as np
fig = plt.figure() ax = fig.gca(projection='3d')
# Make data. X = np.arange(-5, 5, 0.25) Y = np.arange(-5, 5, 0.25) X, Y = np.meshgrid(X, Y) R = np.sqrt(X**2 + Y**2) Z = np.sin(R) surf = ax.plot_surface(X, Y, Z, cmap=cm.coolwarm, linewidth=0, antialiased=False)
Результат (по умолчанию):

После поворота:
ax.view_init(30, -89)

PS чтобы найти какие вам нужны значения углов - легче всего начертить график с углами по умолчанию в Jupyter (iPython), повернуть график мышкой так как вам надо и посмотреть какие углы получились:
In [209]: print('elev:\t{}\t\tazim:\t{}'.format(ax.elev, ax.azim)) elev: 30 azim: -89

Комментариев нет:

Отправить комментарий