본문 바로가기

Programing Language/Python

[plot]matplotlib arrow

반응형
arrow_params = {'length_includes_head': True, 'shape': 'right'}#,
#                     'head_starts_at_zero': True}

plt.arrow(x, y, dx, dy, alpha = .3, label = lb_road[rr], overhang = .2,
          ec = None, color = None, fc = cmap[rr%100], linewidth=0,
          width = .0003, head_width=.001, head_length=.001, **arrow_params)

figure는 figsize=(20,20) 기반으로 했을 때 width, head_width, head_length가 저정도가 적절하다.
plot과는 다르게 arrow는 patch기반이기 때문에 하나씩 그려줘야 한다. array로 여러개 그리기가 안됨.

arrow params

  • overhang: head의 패인 정도. 기본 삼각형이 0 (디폴트)이고, +가 될수록 골격만 있는 화살표 모양 (->)에 가까워지고 -가 될수록 다이아몬드가 된다. 1일 때가 완벽한 ->이 된다.
  • width, head_width, head_length는 비율을 보는게 좋다. figure size에 따라 달라질 수 있기 때문 편하게 사용하기 위해선 그에 따른 scale 변수를 사용하는 것이 유용하다.
  • length_includes_head: head의 크기를 dx, dy에 포함하는지.
  • shape: 삼각형의 한쪽만 그릴건지, 전체를 그릴껀지 ('full', 'left', 'right')
  • head_starts_at_zero: length_includes_head:와 비슷하게 헤드의 중심이 끝점이 아니라 헤드가 끝점부터 시작하는지.

대략 이정도면 arrow를 그리는데 어려움은 없지 않을까?

반응형