2017-12-18 12 views
0

私のプロットには、マウスクリックでアクティブになるアノテーションはほとんどありません。特定のアノテーションを1つ更新したい。ただし、注釈は以前の注釈よりも優先されます。以前の特定のアノテーションをクリアして新しい値で更新することで、きれいに見えるようにするにはどうすればよいですか?matplotlibの特定の注釈を更新する

from matplotlib import pyplot as plt 

fig, ax = plt.subplots() 
x=1 

def annotate(): 
    global x  
    if x==1:   
     x=-1 
    else: 
     x=1 
    ax.annotate(x, (0.5,0.5), textcoords='data', size=10) 
    ax.annotate('Other annotation', (0.5,0.4), textcoords='data', size=10) 

def onclick(event):  
    annotate() 
    fig.canvas.draw() 

cid = fig.canvas.mpl_connect('button_press_event',onclick) 

答えて

1

annotationオブジェクトを作成してからannotate()関数の一部としてテキストを更新することができます。これは、set_text()の注釈オブジェクトのテキストクラスのメソッドによって行うことができます。 (matplotlib.text.Annotationクラスはmatplotlib.text.Textクラスに基づいているため)

ここ

はこれを行う方法です:

from matplotlib import pyplot as plt 

fig, ax = plt.subplots() 
x=1 
annotation = ax.annotate('', (0.5,0.5), textcoords='data', size=10) # empty annotate object 
other_annotation = ax.annotate('Other annotation', (0.5,0.4), textcoords='data', size=10) # other annotate 

def annotate(): 
    global x 
    if x==1: 
     x=-1 
    else: 
     x=1 
    annotation.set_text(x) 


def onclick(event): 
    annotate() 
    fig.canvas.draw() 

cid = fig.canvas.mpl_connect('button_press_event',onclick) 
plt.show() 
+0

私は正確に探していたものであること。ありがとう。 –

関連する問題