2
Matplotlib允許創建漂亮的交互式圖。按住鼠標左鍵的同時拖動可以讓我們平移左右或上下的情節。在按住鼠標右鍵的同時進行拖動,可以放大平行於拖動圖的方向的座標軸。我希望能夠通過拖動顏色條來複制這種行爲。當鼠標在彩條上方時,出現小手,但拖動不起作用。如果用鼠標左鍵拖動顏色條會改變顏色條範圍(保持cmin和cmax之間的差異不變)並用鼠標右鍵拖動會改變cmin和cmax之間的差異(例如縮放),那將會很不錯。任何方式可以做到這一點?matplotlib pan-zoom colorbar axis
到目前爲止,它看起來像解決方案將涉及某種形式的回調函數登記fig.canvas.mpl_connect('button_press_event', func)
。例如: -
def onclick(event):
tb = plt.get_current_fig_manager().toolbar
print repr(tb.mode),bool(tb.mode)
if tb.mode != '':
print 'button=%d, x=%d, y=%d, xdata=%f, ydata=%f'%(
event.button, event.x, event.y, event.xdata, event.ydata)
cid = fig.canvas.mpl_connect('button_press_event', onclick)
它看起來像事件描述here,但我似乎無法弄清楚如何知道我在彩條或情節的其餘部分。
那太好了。 (+1),但這只是解決問題的一個步驟。正如我所看到的,我們還有2個。我需要弄清楚如何獲得由'plt.pcolormesh'返回的'quadmesh'的句柄,然後我需要弄清楚如何在這個quadmesh上得到'set_clim'的當前值。關於如何完成這些事情的任何想法? – mgilson 2013-03-19 05:01:10
我認爲沒有辦法通過event.inaxes獲取顏色條對象,所以您需要將顏色條對象傳遞給事件處理函數。您可以從顏色條獲得四分之一網格對象。 – HYRY 2013-03-19 05:25:28
是的,我想這會起作用。我希望避免做這樣的事情,因爲我想在數字製作完成之後附加gui事件處理的東西(大部分)。但我會接受。感謝你在這方面的所有工作。 – mgilson 2013-03-19 05:26:46