我正在用两个轴绘制支持拾取线的图。我使用matplotlib和twinx()命令。不幸的是,pick事件仅为最顶部轴中的艺术家调用(参见下面的示例)。
import matplotlib.pyplot as plt
import numpy as np
def onPick(event):
print(event.artist.get_label())
def pick():
fig=plt.figure(figsize=(5, 4), dpi=100, tight_layout=True)
axis_1=fig.add_subplot(111)
axis_2=axis_1.twinx()
axis_1.set_ylim(0, 10)
axis_2.set_ylim(0, 10)
x=np.array([1,2,3,4])
y_1=np.array([1,1,1,1])
y_2=y_1+4
axis_1.plot(x, y_1, picker=5, label='line_1')
axis_2.plot(x, y_2, picker=5, label='line_2')
fig.canvas.mpl_connect('pick_event', onPick)
plt.show()
if __name__=='__main__':
pick()
有没有办法从下面的坐标轴中选择直线?
2条答案
按热度按时间vulvrdjw1#
不可能,我找到了解决办法。我不是从斧头上挑出来的,我是从传说中挑出来的。
我认为这是一个很好的妥协。
qnakjoqk2#
不是不可能!但是,您必须处理
button_press_event
,并通过查看每个绘制的line
来找到MouseEvent
,从而自行确定选择了什么,而不是使用pick_event
。每个axes
还需要它自己的annotation
,否则您将很难找到正确的注解位置。以下是我在this answer的启发下所做的: