Проблема связана с использованием ноутбука Jupyter и встроенного бэкэнда. Таким образом, вы получите правильный вывод при использовании бэкэнда %matplotlib notebook
. (Для этого нужно перезапустить ядро.)
%matplotlib notebook
from mpl_toolkits.axisartist.axislines import SubplotZero
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure(1)
ax = SubplotZero(fig, 111)
fig.add_subplot(ax)
for direction in ["xzero", "yzero"]:
# adds arrows at the ends of each axis
ax.axis[direction].set_axisline_style("-|>", size=5)
# adds X and Y-axis from the origin
ax.axis[direction].set_visible(True)
for direction in ["left", "right", "bottom", "top"]:
# hides borders
ax.axis[direction].set_visible(False)
x = np.linspace(-0.5, 1., 100)
ax.plot(x, np.sin(x*np.pi))
plt.show()
![enter image description here](https://i.stack.imgur.com/UsFo0.png)
Если вы хотите / должны использовать бэкэнд %matplotlib inline
, вам может потребоваться отменить некоторые настройки, чтобы стрелки не были обрезаны на рисунке.
Настройкой по умолчанию для создания рисунка png является использование опции bbox_inches="tight"
. Это можно отменить через
%config InlineBackend.print_figure_kwargs = {'bbox_inches':None}
Размер фигуры по умолчанию, параметры dpi и подплота отличаются . Отменить их можно через
plt.rcdefaults()
Из-за ошибки в Iypthon rcParameters не следует устанавливать в первой ячейке ноутбука.
Следовательно
# Cell 1
%matplotlib inline
%config InlineBackend.print_figure_kwargs = {'bbox_inches':None}
# Cell 2
import matplotlib.pyplot as plt
plt.rcdefaults()
from mpl_toolkits.axisartist.axislines import SubplotZero
import numpy as np
fig = plt.figure(1)
ax = SubplotZero(fig, 111)
fig.add_subplot(ax)
for direction in ["xzero", "yzero"]:
# adds arrows at the ends of each axis
ax.axis[direction].set_axisline_style("-|>", size=5)
# adds X and Y-axis from the origin
ax.axis[direction].set_visible(True)
for direction in ["left", "right", "bottom", "top"]:
# hides borders
ax.axis[direction].set_visible(False)
x = np.linspace(-0.5, 1., 100)
ax.plot(x, np.sin(x*np.pi))
plt.show()
![enter image description here](https://i.stack.imgur.com/CUNp1.png)