Как подписать оси на графике в Matplotlib Pyplot

Подскажите пожалуйста как подписать оси на графике построенном в библиотеке Matplotlib pyplot если оси выровнены по центру. Вот мой код:

import matplotlib.pyplot as plt
import numpy as np

a = 0.04
y = lambda x: a * np.sin(x)

fig = plt.subplots()
plt.title("First graphic: 0.04 * sin(x)")
x = np.linspace(-10, 10, 100)
plt.plot(x, y(x), "r-")

ax = plt.gca()
ax.spines['left'].set_position("center")
ax.spines['bottom'].set_position('center')
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)

ax.set_xlabel("X", fontsize=15, color='blue')
ax.set_ylabel("Y", fontsize=15, color='orange')

plt.show()

вот я выставил оси, но они выставились очень криво( Может есть какой-то атрибут выравнивания?


Ответы (2 шт):

Автор решения: S. Nick

Попробуйте добавить labelpad

import matplotlib.pyplot as plt
import numpy as np

a = 0.04
y = lambda x: a * np.sin(x)

fig = plt.subplots()
plt.title("First graphic: 0.04 * sin(x)")
x = np.linspace(-10, 10, 100)
plt.plot(x, y(x), "r-")

ax = plt.gca()
ax.spines['left'].set_position('center')     
ax.spines['bottom'].set_position('center')
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)


ax.set_xlabel("X", fontsize=15, color='blue', labelpad=120)    # +
ax.set_ylabel("Y", fontsize=15, color='orange', labelpad=140)  # +

ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')

plt.show()

введите сюда описание изображения


А случайно не знаете, игрек можно перевернуть или тут уже всё?

Попробуйте добавить rotation

import matplotlib.pyplot as plt
import numpy as np

a = 0.04
y = lambda x: a * np.sin(x)

fig = plt.subplots()
plt.title("First graphic: 0.04 * sin(x)")
x = np.linspace(-10, 10, 100)
plt.plot(x, y(x), "r-")

ax = plt.gca()
ax.spines['left'].set_position('center')     
ax.spines['bottom'].set_position('center')
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)


ax.set_xlabel("X", fontsize=15, color='blue', labelpad=120)    # +
ax.set_ylabel("Y", fontsize=15, color='orange', labelpad=140, rotation=0)  # +

ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')

plt.show()

введите сюда описание изображения

→ Ссылка
Автор решения: strawdog

Вы можете вручную располагать маркеры осей, принимая во внимание, что для маркеров начало координат находится в левом нижнем углу и позиция измеряется в долях от единицы:

ax.xaxis.set_label_coords(1.005, 0.495)
ax.yaxis.set_label_coords(0.495, 1.005)

введите сюда описание изображения

→ Ссылка