2016-12-12 15 views
3

私はpyplotの新機能です。私は、コード行を以下により行った私のプロットのカスタムボタンを追加する必要があります。matplotlib figureを保存するときにカスタムボタンを隠すにはどうすればいいですか?

import numpy as np 
import matplotlib.pyplot as plt 
from matplotlib.widgets import Button 

dataX = np.array([1,2,3,4,5,6,7,8,9,10]) 
dataY = np.array([1193,1225,1125,1644,1255,13676,2007,2008,12359,1210]) 

ax = plt.subplot(111) 
def on_click(event): 
    if event.dblclick: 
     ax.plot((event.xdata, event.xdata), (mean-standardDeviation, mean+standardDeviation), 'r-') 
     plt.show() 

def _yes(event): 
    print("yolo") 

mean = np.mean(dataY) 
standardDeviation = np.std(dataY) 

ax.plot(dataX, dataY, linewidth=0.5) 
plt.connect('button_press_event', on_click) 

axcut = plt.axes([0.9, 0.0, 0.1, 0.075]) 
bcut = Button(axcut, 'YES', color='red', hovercolor='green') 
bcut.on_clicked(_yes) 

plt.show() 

このコード行が正常に私が必要とする溶液を得ました。しかし、私の質問は、ツールバーのボタンをクリックして図を保存しようとすると、カスタムボタンを表示しない可能性がありますか?

答えて

2

ボタンを非表示にして、必要なとき、つまりクリックしたいときだけ表示するという戦略があります。 ボタンの表示/非表示や図のどこかのダブルクリックでキーを押すなど、いくつかの可能性が考えられます。 マウスを軸の上に置いたときにそのボタンが表示されるのは、簡単なことです(これは最初のユーザーのユーザーエクスペリエンスが悪いかもしれませんが、アプリケーションを使用している人が同じ場合は、彼女は、ボタンを期待してマウスを置く場所を知っている必要があります)

ここで働い例です。

import numpy as np 
import matplotlib.pyplot as plt 
from matplotlib.widgets import Button 

dataX = np.array([1,2,3,4,5,6,7,8,9,10]) 
dataY = np.array([1193,1225,1125,1644,1255,13676,2007,2008,12359,1210]) 

ax = plt.subplot(111) 
def on_click(event): 
    if event.dblclick: 
     ax.plot((event.xdata, event.xdata), (mean-standardDeviation, mean+standardDeviation), 'r-') 
     plt.show() 

def on_enter(event): 
    axcut.set_visible(True) 
def on_leave(event): 
    axcut.set_visible(False) 
def _yes(event): 
    print("yolo") 

mean = np.mean(dataY) 
standardDeviation = np.std(dataY) 

ax.plot(dataX, dataY, linewidth=0.5) 
plt.connect('button_press_event', on_click) 
plt.connect("axes_enter_event", on_enter) 
plt.connect("axes_leave_event", on_leave) 


axcut = plt.axes([0.9, 0.0, 0.1, 0.075]) 
bcut = Button(axcut, 'YES', color='red', hovercolor='green') 
axcut.set_visible(False) 
bcut.on_clicked(_yes) 

plt.show() 
+0

ありがとうございます。 – nas

2

Buttonクラスには、それを非表示にする良い方法がないようです。しかし、次のように個々のボタンを隠すことができます:

もう一度表示するには、すべての部品を再び有効にします。

+0

'GCFは、()'は何? – SiHa

+0

現在のFigureを取得するpyplot関数です。疑問符で 'pyplot'が' plt'と呼ばれているのがわかります。それを反映するように答えを更新します。 –

+0

ああ、そうです。ニースの解決策!それは私の+1です... – SiHa

関連する問題