2014-04-09 3 views
2

미안하지만 난 정말 설명서에 다음 찾으려고 무엇입니까? 예 : in :하기 matplotlib 주석 자세한 설명서

ax.annotate('arc', xy=(1.5, -1), xycoords='data', 
      xytext=(-40, -30), textcoords='offset points', 
      arrowprops=dict(arrowstyle="->", connectionstyle= 
      "arc,angleA=0,armA=20,angleB=-90,armB=15,rad=7"),) 

감사합니다.

+1

[여기] (http://matplotlib.org/Matplotlib.pdf) 을 찾고 대답은 [여기] (http://matplotlib.org/1.3.1/api/artist_api.html)입니다. – adrin

+0

@adrin 아티스트 링크에는 내가 원했던 것이 포함되어 있습니다! 정말 고맙습니다. 내가 그것을 받아 들일 수 있도록 답을하고 싶니? –

답변

2

이 매개 변수는 ConnectionStyle.Arc 클래스를 초기화하는 것입니다. 자세한 내용은 here에서 볼 수 있습니다.

클래스 ConnectionStyle.Arc (angleA = 0 angleB = 0의 armA = 없음, armB = 없음, RAD = 0.0)

베이스는 :

가 picewise를 작성 matplotlib.patches._Base 두 개의 포인트 사이의 연속 2 차 베 지어 경로. 경로에는 두 개의 통과 점이있을 수 있습니다. 지점 A에서 armA 거리와 각도 A 각도에 , 점 B를 기준으로 점이 배치됩니다. 가장자리는 rad로 반올림됩니다.

angleA : 경로의 시작 각

angleB : 경로

의 armA 각도 종료 : 출발 아암의 길이

armB : 종료 아암의 길이

RAD : 모서리 반올림 반경

연결 (posA, posB)

0

주어진 위치의 문서가 매우 희박하며 angleA, angleB, armA, armB 각도가 정의되어 있지 않으므로 시행 착오의 문제입니다.

나는 angleA, 의 armA, angleB를 입력 ConnectionStyle angle3, arc3, 각도아크하고 제공 슬라이더 중 하나를 선택하는 라디오 버튼을 제공하는 스크립트를 작성 , armB, rad. 나는 각 ConnectionStyle이 자신의 인수 집합만을 허용한다는 것을 발견했다. 예를 들어, angle3에 반지름 (rad)을, arc3에 angleA를 제공하면 오류가 발생한다. 즉, 이런 종류의 if 문이 필요하다. 상이한 연결 유형에만 예상 인자를 전달할 :

if connStyle == 'angle3': 
    connstyle="angle3,angleA=%4.2f,angleB=%4.2f"%(angleA,angleB) 
elif connStyle == 'arc3': 
    connstyle="arc3,rad=%4.2f"%(radius) 
elif connStyle == 'angle': 
    connstyle="angle,angleA=%4.2f,angleB=%4.2f,rad=%4.2f"%(angleA,angleB,radius*10.) 
elif connStyle == 'arc': 
    connstyle="arc,angleA=%4.2f,angleB=%4.2f,armA=%4.2d,armB=%4.2f,rad=%4.2f"%(angleA,angleB,armA,armB,radius) 

각도 angleA 및 angleB 왼쪽 가리키는 0도 배향 될 것 하향 포인팅 90 도는, 즉 좌측으로 지향 반 시계 양성 각도 측정 도 단위. 그러나 커브는 중앙 ​​범위 밖에서 정말로 이상한 것들을합니다.

다음은 전체 스크립트이므로 직접 재생할 수 있습니다. 이 물건은 거의 완전히 문서화되지 않았고 조금 특이합니다.

import numpy as np 
import matplotlib.pyplot as plt 
from matplotlib.widgets import Slider, Button, RadioButtons 

# Global variables 
angleA = 90.0 
armA = 1.0 
angleB = 0.0 
armB = 1.0 
connStyle = 'angle3' 
# connStyle = 'arc3' 
# connStyle = 'angle' 
# connStyle = 'arc' 
radius=0.1 


plt.close('all') 
fig = plt.figure(figsize=(10,10)) 
ax = fig.add_axes([.25,.4,.7,.5]) 
plt.axis([0, 10, 0, 10]) 

axcolor = 'w' 
axAngleA = plt.axes([0.25, 0.25, 0.65, 0.03], axisbg=axcolor) 
axArmA = plt.axes([0.25, 0.2, 0.65, 0.03], axisbg=axcolor) 
axAngleB = plt.axes([0.25, 0.15, 0.65, 0.03], axisbg=axcolor) 
axArmB = plt.axes([0.25, 0.1, 0.65, 0.03], axisbg=axcolor) 
axRadius = plt.axes([0.25, 0.05, 0.65, 0.03], axisbg=axcolor) 

SlAngleA = Slider(axAngleA, 'AngleA', -180.0, 180.0, valinit=angleA) 
SlArmA = Slider(axArmA, 'ArmA', -10., 10., valinit=armA) 
SlAngleB = Slider(axAngleB, 'AngleB', -180.0, 180.0, valinit=angleB) 
SlArmB = Slider(axArmB, 'ArmB', -10., 10., valinit=armB) 
SlRadius = Slider(axRadius, 'Rad', -10., 10., valinit=radius) 

# Display function 
def display(connstyle): 
    ax.cla() 
    plt.annotate("ArrowTest", 
       xytext=(8, 8), 
       xy=(2,2), 
       arrowprops=dict(arrowstyle="->", 
           connectionstyle=connstyle)) 

    # plt.show() 
    fig.canvas.draw_idle() 


# Update function 
def update(val): 
    global angleA, angleB, armA, armB, connStyle, radius 
    angleA = SlAngleA.val 
    armA = SlArmA.val 
    angleB = SlAngleB.val 
    armB = SlArmB.val 
    radius = SlRadius.val 

    if connStyle == 'angle3': 
     connstyle="angle3,angleA=%4.2f,angleB=%4.2f"%(angleA,angleB) 
    elif connStyle == 'arc3': 
     connstyle="arc3,rad=%4.2f"%(radius) 
    elif connStyle == 'angle': 
     connstyle="angle,angleA=%4.2f,angleB=%4.2f,rad=%4.2f"%(angleA,angleB,radius*10.) 
    elif connStyle == 'arc': 
     connstyle="arc,angleA=%4.2f,angleB=%4.2f,armA=%4.2d,armB=%4.2f,rad=%4.2f"%(angleA,angleB,armA,armB,radius) 

    # print 'connstyle = "%s"'%connstyle  

    display(connstyle) 

SlAngleA.on_changed(update) 
SlArmA.on_changed(update) 
SlAngleB.on_changed(update) 
SlArmB.on_changed(update) 
SlRadius.on_changed(update) 

resetax = plt.axes([0.8, 0.005, 0.1, 0.04]) 
button = Button(resetax, 'Reset', color=axcolor, hovercolor='0.975') 
def reset(event): 
    SlangleA.reset() 
    SlangleB.reset() 
    SlRad.reset() 
    ax.cla() 
button.on_clicked(reset) 

rax = plt.axes([0.025, 0.5, 0.15, 0.15], axisbg=axcolor) 
radio = RadioButtons(rax, ('angle3', 'arc3', 'angle', 'arc'), active=0) 
def connstylefunc(label): 
    global connStyle 
    connStyle = label 
    # print "Switch connstyle to %s"%connStyle 
    display(connStyle) 
    fig.canvas.draw_idle() 
radio.on_clicked(connstylefunc) 

# Plot first time 
plt.sca(ax) 
display("angle3,angleA=%4.2f,angleB=%4.2f"%(angleA,angleB)) 

plt.show() 
figmgr=plt.get_current_fig_manager() 
figmgr.canvas.manager.window.raise_() 
geom=figmgr.window.geometry() 
x,y,dx,dy=geom.getRect() 
figmgr.window.setGeometry(10,10,dx,dy) 

나는 실제로 스크립트의 스크린 샷을 찍었지만 게시하는데 충분한 평판 포인트가 없다고 생각합니다.