Как увеличить размер стрелки axis_artist в matplotlib - PullRequest
1 голос
/ 30 марта 2019

Я играю с примером из здесь . enter image description here

Я хочу увеличить размер стрелок на концах осей X и Y. Я нашел это :

set_arrowstyle («->, размер = 1,5») set_arrowstyle («->», размер = 1,5)

Итак, я попытался:

ax.axis["xzero"].set_axisline_style("->",  size=5)

Но это не помогает мне.

Ответы [ 2 ]

1 голос
/ 30 марта 2019

Проблема связана с использованием ноутбука 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

Если вы хотите / должны использовать бэкэнд %matplotlib inline, вам может потребоваться отменить некоторые настройки, чтобы стрелки не были обрезаны на рисунке.

  1. Настройкой по умолчанию для создания рисунка png является использование опции bbox_inches="tight". Это можно отменить через

    %config InlineBackend.print_figure_kwargs = {'bbox_inches':None}
    
  2. Размер фигуры по умолчанию, параметры 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

1 голос
/ 30 марта 2019

Параметр size должен быть в кавычках. Вы вышли за пределы кавычек после запятой. Используйте следующее

ax.axis[direction].set_axisline_style("-|>, size=4")

enter image description here

Полный код с официального сайта

from mpl_toolkits.axisartist.axislines import SubplotZero
import matplotlib.pyplot as plt
import numpy as np

if 1:
    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=4") # <--- modified here

        # 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()
...