Изменение положения осей в Axes3D - PullRequest
0 голосов
/ 23 мая 2018

Я использую mplot3d из библиотеки mpl_toolkits.При отображении трехмерной поверхности на рисунке я понял, что оси не были расположены так, как мне хотелось бы.

Позвольте мне показать, я добавил к следующему снимку экрана положение каждой оси:

enter image description here

Есть ли способ изменить положение осей, чтобы получить этот результат:

enter image description here

Вот рабочий код:

import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D

ax = Axes3D(plt.figure())
def f(x,y) :
    return -x**2 - y**2

X = np.arange(-1, 1, 0.02)
Y = np.arange(-1, 1, 0.02)
X, Y = np.meshgrid(X, Y)
Z = f(X, Y)
ax.plot_surface(X, Y, Z, alpha=0.5)

# Hide axes ticks
ax.set_xticks([-1,1])
ax.set_yticks([-1,1])
ax.set_zticks([-2,0])

ax.set_yticklabels([-1,1],rotation=-15, va='center', ha='right')

plt.show()

Я пытался использовать оператор xaxis.set_ticks_position('left'), но он не работает.

1 Ответ

0 голосов
/ 26 октября 2018

Нет документированных методов, но с некоторыми идеями взлома от https://stackoverflow.com/a/15048653/1149007 вы можете.

import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D

fig = plt.figure()
ax = ax = fig.add_subplot(111, projection='3d')
ax.view_init(30, 30)


def f(x,y) :
    return -x**2 - y**2

X = np.arange(-1, 1, 0.02)
Y = np.arange(-1, 1, 0.02)
X, Y = np.meshgrid(X, Y)
Z = f(X, Y)
ax.plot_surface(X, Y, Z, alpha=0.5)

# Hide axes ticks
ax.set_xticks([-1,1])
ax.set_yticks([-1,1])
ax.set_zticks([-2,0])

ax.xaxis._axinfo['juggled'] = (0,0,0)
ax.yaxis._axinfo['juggled'] = (1,1,1)
ax.zaxis._axinfo['juggled'] = (2,2,2)

plt.show()

enter image description here

Я не могу понять значение третьего числа в тройках.Если установить нули, на рисунке ничего не изменится.Так что смотрите в коде для дальнейшей настройки.

Вы также можете посмотреть связанный вопрос Изменение положения вертикальной (z) оси 3D-графика (Matplotlib)? с низким уровнем взлома _PLANESсвойство.

...