Ответ 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')
И я получаю:
(вы не можете видеть вертикальную ось, так как нижний 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()
Альтернатива с использованием 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
Используя метод 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
в месте в этой системе координат.