gpt4 book ai didi

python - matplotlib 泛缩放颜色条轴

转载 作者:行者123 更新时间:2023-11-28 16:44:11 26 4
gpt4 key购买 nike

Matplotlib 允许创建漂亮的交互式绘图。按住鼠标左键拖动允许我们左右或上下平移绘图。按住鼠标右键拖动允许我们在平行于您拖动绘图的方向的轴上缩放。我希望能够通过在颜色条上拖动来复制这种行为。当鼠标在颜色条上时,小手出现,但拖动没有任何作用。如果用鼠标左键沿着颜色条拖动会改变颜色条范围(保持 cmin 和 cmax 之间的差异不变)并且用鼠标右键拖动会改变 cmin 和 cmax 之间的差异(例如缩放),那就太好了有什么办法可以做到这一点?

到目前为止,看起来解决方案将涉及某种形式的由 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 ,但我似乎无法弄清楚如何知道我是在颜色条上还是在情节的其余部分。

最佳答案

event.inaxes 是当前事件的斧头:

import numpy as np
from matplotlib import pyplot as plt
from functools import partial

def onclick_cbar(cbar, event):
if event.inaxes is cbar.ax:
print cbar.mappable
print cbar.mappable.get_clim()
print event.xdata, event.ydata

fig = plt.figure()
y, x = np.mgrid[-1:1:100j, -1:1:100j]
z = np.sin(x**2 + y**2)
pcm = plt.pcolormesh(x, y, z)
cbar = plt.colorbar()
cid = fig.canvas.mpl_connect('button_press_event', partial(onclick_cbar, cbar))
plt.show()

关于python - matplotlib 泛缩放颜色条轴,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15490886/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com