如何解决使用 matplotlib ginput 收集鼠标单击位置并通过位置绘制垂直线
我正在尝试使用 ginput 收集一系列鼠标单击位置,每次通过在每次单击时绘制一条垂直线来更新绘图:
import numpy as np
import matplotlib.pyplot as plt
x=np.arange(10)
y=x**2
fig,ax=plt.subplots()
times=[]
ax.plot(x,y)
while True:
pts=plt.ginput(1)
time=pts[0][0]
times.append(time)
ax.axvline(x=time)
# click on right side to escape
if (time>8.5):
break
print ("final=",times)
这可以正常工作,因为它正确存储了所有点击位置,但它只在每第二次点击时绘制垂直线,我不明白为什么会发生这种情况。
我正在使用
Python 3.9.2(默认,2021 年 2 月 24 日,13:30:36) [Clang 12.0.0 (clang-1200.0.32.29)] 在达尔文
和 matplotlib 3.3.4 版
解决方法
好吧,我刚刚意识到发生了什么,正在绘制线条,但直到单击 ginput 后该图才更新,所以我误解了这一点,因为似乎我需要在某个位置单击两次才能获得那里有一条线。 Using the solution from this post,添加暂停命令解决了这个问题:
import numpy as np
import matplotlib.pyplot as plt
x=np.arange(10)
y=x**2
fig,ax=plt.subplots()
times=[]
ax.plot(x,y)
while True:
pts=plt.ginput(1)
time=pts[0][0]
times.append(time)
ax.axvline(x=time)
plt.pause(0.05)
if (time>8.5):
break
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。