2016-10-19 5 views
0

40×160次元(倍精度の値)を持つ次のnumpy配列(plotDataFirst)をプロットしています。python matplotlibでクリックしたときにラベルが対話的に表示される

私はプロット(描かれている40のうちの1つ)にカーソルを合わせ、そのプロットのラベルを見ることができます。

私はすべてのラベルを含む配列(1x40)を持っています。これを行う方法はありますか?このタイプのインタラクティブラベルを追加する方法がわかりません。

plt.interactive(False) 
plt.plot(plotDataFirst) 
plt.show() 
+0

あなたはhttp://matplotlib.org/examples/event_handling/legend_pickingを見てみたいことがあります。 htmlとhttp://matplotlib.org/users/event_handling.html – user2699

答えて

1

私はあなたがラベル(ツールチップ、凡例、タイトル、ラベル、...)を表示したい正確にどのようにわからないんだけど、このようなものは、最初のステップであるかもしれない:

import numpy as np 
import matplotlib.pylab as pl 

pl.close('all') 

def line_hover(event): 
    ax = pl.gca() 
    for line in ax.get_lines(): 
     if line.contains(event)[0]: 
      print(line.get_label()) 

labels = ['line 1','line 2','line 3'] 

fig = pl.figure() 
for i in range(len(labels)): 
    pl.plot(np.arange(10), np.random.random(10), label=labels[i]) 
pl.legend(frameon=False) 

fig.canvas.mpl_connect('motion_notify_event', line_hover)   
pl.show() 

基本的には、すべてのマウスの動き(motion_notify_event)に対して、カーソルが行のいずれかにあるかどうかを確認し、そうであれば(すぐにハック/解決策として)、その行のラベルをコマンドラインに表示します。

ツールチップを使用すると、よりよいアプローチであるかもしれないが、それはバックエンド固有のソリューションを必要としているようだ(例えばhttps://stackoverflow.com/a/4620352/3581217を参照)

関連する問題