Подтвердить что ты не робот

Показать ось начала (x, y) в графике matplotlib

У меня есть следующий простой график, и я хотел бы отобразить ось начала (x, y). У меня уже есть сетка, но мне нужно подчеркнуть ось x, y.

enter image description here

это мой код:

x = linspace(0.2,10,100)
plot(x, 1/x)
plot(x, log(x))
axis('equal')
grid()

Я видел этот вопрос. В принятом ответе предлагается использовать "ось позвоночника" и просто ссылки на какой-то пример. Однако пример слишком сложный, используя подзаголовки. Я не могу понять, как использовать "ось позвоночника" в моем простом примере.

4b9b3361

Ответ 1

Использование subplots не слишком сложно, возможно, будут иглы.

Немой, простой способ:

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0.2,10,100)
fig, ax = plt.subplots()
ax.plot(x, 1/x)
ax.plot(x, np.log(x))
ax.set_aspect('equal')
ax.grid(True, which='both')

ax.axhline(y=0, color='k')
ax.axvline(x=0, color='k')

И я получаю:

with axlines

(вы не можете видеть вертикальную ось, так как нижний x-предел равен нулю.)

Альтернатива с использованием простых шипов

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0.2,10,100)
fig, ax = plt.subplots()
ax.plot(x, 1/x)
ax.plot(x, np.log(x))
ax.set_aspect('equal')
ax.grid(True, which='both')

# set the x-spine (see below for more info on `set_position`)
ax.spines['left'].set_position('zero')

# turn off the right spine/ticks
ax.spines['right'].set_color('none')
ax.yaxis.tick_left()

# set the y-spine
ax.spines['bottom'].set_position('zero')

# turn off the top spine/ticks
ax.spines['top'].set_color('none')
ax.xaxis.tick_bottom()

with_spines

Альтернатива с использованием seaborn (мой любимый)

import numpy as np
import matplotlib.pyplot as plt
import seaborn
seaborn.set(style='ticks')

x = np.linspace(0.2,10,100)
fig, ax = plt.subplots()
ax.plot(x, 1/x)
ax.plot(x, np.log(x))
ax.set_aspect('equal')
ax.grid(True, which='both')
seaborn.despine(ax=ax, offset=0) # the important part here

with_seaborn

Используя метод set_position позвоночника

Вот документы для set_position метода шипов:

Положение спинного хребта задается с помощью 2 кортежей (тип позиции, количество). Типы позиций:

  • 'outward': поместите позвоночник из области данных на указанное количество точек. (Отрицательные значения указывают размещение позвоночник внутрь.)

  • 'axes': поместите позвоночник в указанную координату осей (из 0.0-1.0).

  • 'data': поместите спинной хребет в указанную координату данных.

Кроме того, сокращенные обозначения определяют специальные позиции:

  • 'center' → ('axes', 0.5)
  • 'zero' → ('data', 0.0)

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

ax.spines['left'].set_position((system, poisition))

где system - это "внешний", "оси" или "данные" и position в месте в этой системе координат.