Как рисовать стрелки в Matplotlib


Чтобы рисовать стрелки в Matplotlib, вы можете использовать функцию matplotlib.pyplot.arrow , которая использует следующий синтаксис:

matplotlib.pyplot.стрелка (х, у, дх, dy)

куда:

  • x, y: координаты x и y основания стрелки
  • dx, dy: длина стрелки по осям x и y.

В этом руководстве представлено несколько примеров использования этой функции на практике.

Пример 1. Нарисуйте одну стрелку

Следующий код показывает, как нарисовать одну стрелку на графике Matplotlib:

import matplotlib.pyplot as plt

#define two arrays for plotting
A = [3, 5, 5, 6, 7, 8]
B = [12, 14, 17, 20, 22, 27]

#create scatterplot, specifying marker size to be 40
plt.scatter (A, B, s= 40 )

#add arrow to plot
plt.arrow (x= 4 , y= 18 , dx= 2 , dy= 5 , width= .08 ) 

#display plot 
plt.show()

Обратите внимание, что мы можем установить dx=0 , чтобы создать вертикальную стрелку, и dy=0 , чтобы создать горизонтальную стрелку.

Например, вот как создать вертикальную стрелку:

import matplotlib.pyplot as plt

#define two arrays for plotting
A = [3, 5, 5, 6, 7, 8]
B = [12, 14, 17, 20, 22, 27]

#create scatterplot, specifying marker size to be 40
plt.scatter (A, B, s= 40 )

#add arrow to plot
plt.arrow (x= 4 , y= 18 , dx= 0 , dy= 5 , width= .08 ) 

#display plot 
plt.show() 

Пример 2: Стиль стрелки

По умолчанию стрелка в Matplotlib синяя с черными краями, но мы можем легко изменить это, используя аргументы facecolor и edgecolor :

import matplotlib.pyplot as plt

#define two arrays for plotting
A = [3, 5, 5, 6, 7, 8]
B = [12, 14, 17, 20, 22, 27]

#create scatterplot, specifying marker size to be 40
plt.scatter (A, B, s= 40 )

#add arrow to plot
plt.arrow (x= 4 , y= 18 , dx= 0 , dy= 5 , width= .08 , facecolor= 'red' , edgecolor= 'none' ) 

#display plot 
plt.show() 

Полный список свойств стилей, которые можно применить к стрелкам, вы можете найти здесь .

Пример 3. Добавление аннотаций к стрелкам

В следующем коде показано, как добавить аннотацию под стрелкой на графике Matplotlib:

import matplotlib.pyplot as plt

#define two arrays for plotting
A = [3, 5, 5, 6, 7, 8]
B = [12, 14, 17, 20, 22, 27]

#create scatterplot, specifying marker size to be 40
plt.scatter (A, B, s= 40 )

#add arrow to plot
plt.arrow (x= 4 , y= 18 , dx= 0 , dy= 5 , width= .08 ) 

#add annotation
plt.annotate('General direction', xy = (3.4, 17))

#display plot 
plt.show() 

Дополнительные ресурсы

Как построить круги в Matplotlib (с примерами)
Как рисовать прямоугольники в Matplotlib (с примерами)