2014-04-28 1 views
1

matplotlib의 주석 함수에서 화살표와 텍스트 사이의 거리 (채우기)를 어떻게 설정합니까? 텍스트가 화살표에 너무 가까워지면 텍스트를 조금 더 멀리 이동하려고합니다.Matplotlib - 주석 함수에서 화살표와 텍스트 사이에 패드 설정

기본 예제 : 당신이를 제거해야 할 것이다, 그래서

import matplotlib.pyplot as plt 

plt.annotate('Here it is!',xy=(-1,-1),xytext=(0,0), 
      arrowprops=dict(arrowstyle='->',lw=1.5)) 

plt.xlim(-10,10) 
plt.ylim(-10,10) 

plt.show() 

enter image description here

답변

0

: 여기

set pad between arrow and text in matplotlib annotate

fig, ax = plt.subplots(1, 3, figsize=(7, 3)) 
pad_val = [-5, 0, 5] 
for a,p in zip(ax, pad_val): 
    a.annotate('Here it is!\npad={}'.format(p),xy=(-1,-1),xytext=(1,1), 
       arrowprops=dict(arrowstyle='-|>', fc="k", ec="k", lw=1.5), 
       bbox=dict(pad=p, facecolor="none", edgecolor="none")) 
    a.set_xlim(-10,10) 
    a.set_ylim(-10,10) 
단점은 ( facecolor="none"이 필수입니다) 주석 뒤에 색상을 추가 할 수 있다는 것입니다 , 또는 화살표는 항상 프레임 테두리에 붙어 있으며 추한 것일 수 있습니다.

HTH

+0

이것은 훌륭하게 작동하는 것 같습니다! (왜 당신이 downvoted있어 ...). 경계 상자를 실제로 보지 않으려는 사람들에게는 bbox에 'facecolor ='none ', edgecolor ='none''을 전달할 수 있습니다. FancyArrow를 사용하여 원래 게시 한 예제 코드에서 작동하므로이 코드를 허용 된 대답으로 변경했습니다. – DanHickstein

+0

@DanHickstein''none ''에 대한 좋은 지적은'fc = None'이 작동하지 않는다는 것입니다. 그에 따라 편집하겠습니다. – jrjc

1

당신은 당신의 arrowprops 사전에 shrink 키워드 인수를 사용할 수 있지만, 불행히도 FancyArrowPatch 객체는 지원하지 않습니다 arrowstyle='->'.

shrink으로 주어진 값은 팁 /베이스가 xyxytext 좌표에서 벗어나는 비율입니다. 당신이 bbox 속성 재생할 수있는 멋진 화살표를 들어

import matplotlib.pyplot as plt 

plt.annotate('Here it is!',xy=(-1,-1),xytext=(0,0), 
      arrowprops=dict(lw=1.5, shrink=0.15)) 

plt.xlim(-10,10) 
plt.ylim(-10,10) 

plt.show() 
+0

감사합니다. 이것은 내가 찾고 있었던 것입니다! 그러나 멋진 화살표를위한 해결 방법이 없습니까? 나는 '->'스타일의 화살을 선호한다. – DanHickstein

+0

나는 그렇게 생각하지 않는다. 'AttributeError : 'FancyArrowPatch'객체에 불행하게도 'set_shrink'속성이 없습니다. – Ffisegydd

+0

@DanHickstein 환상적인 화살표 주위의 해결 방법에 대한 내 대답을 참조하십시오. – jrjc

관련 문제