Увеличить встроенный 3D matplotlib рисунок *без * с помощью мыши?
Этот вопрос объясняет, как изменить "положение камеры" 3D-графика в matplotlib, указав углы возвышения и азимута. ax.view_init(elev=10,azim=20)
, например.
Существует ли аналогичный способ указать масштаб фигуры численно - то есть без использования мыши?
Единственный релевантный вопрос, который я смог найти, - это Этот , но принятый ответ на него включает установку другой библиотеки, которая затем также требует использования мыши, чтобы зум.
Редактировать:
Просто для ясности, я не говорю об изменении размера фигуры (используя fig.set_size_inches()
или аналогичный). Размер рисунка в порядке; проблема в том, что нанесенный материал занимает только небольшую часть рисунка:
1 ответ:
Самое близкое решение к
view_init
- это прямое заданиеax.dist
. Согласно документам дляget_proj
"dist-это расстояние точки обзора глаза от точки объекта". Начальное значение в настоящее время жестко закодировано сdist = 10
. Более низкие значения (выше 0!) приведет к увеличенному сюжету.Примечание : это поведение на самом деле не документировано и может измениться. Изменение границ осей для построения только соответствующих частей, вероятно, является лучшим решением в большинстве случаев. Вы мог бы использовать
ax.autoscale(tight=True)
делать это удобно.Рабочий пример IPython/Jupyter:
%matplotlib inline from IPython.display import display from mpl_toolkits.mplot3d import axes3d import matplotlib.pyplot as plt fig = plt.figure() ax = fig.add_subplot(111, projection='3d') # Grab some test data. X, Y, Z = axes3d.get_test_data(0.05) # Plot a basic wireframe. ax.view_init(90, 0) ax.plot_wireframe(X, Y, Z, rstride=10, cstride=10) plt.close() from ipywidgets import interact @interact(dist=(1, 20, 1)) def update(dist=10): ax.dist = dist display(fig)
Вывод
dist = 10
dist = 5