Увеличить встроенный 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

