我需要使用matplotlib函数ginput()在一个图中定义一个区域。然而,因为它是一个不规则的形状,并且在每个图中都不同,所以我不能确定手头有多少点,即
x = randn(10,10)
imshow(x)
n = I don't know yet
points = ginput(n)
任何人都知道如何去做? 谢谢 戴夫
答案 0 :(得分:7)
来自文档,即help(ginput)
,
ginput(self,n = 1,timeout = 30,show_clicks = True,mouse_add = 1,mouse_pop = 3,mouse_stop = 2)
阻止与图形互动的电话。
这将等待来自用户的 n 点击并返回一个列表 每次点击的坐标。
如果超时为零或为负,则不会超时。
如果 n 为零或负数,则累积点击次数,直至中间点击 (或者可能同时使用两个鼠标按钮)终止输入。
右键单击取消上一次输入。
用于各种操作的按钮(添加点,删除 点,终止输入)可以通过 参数* mouse_add *,* mouse_pop *和* mouse_stop *,给出 相关的鼠标按钮:左边1个,中间2个,左边3个 右。
键盘也可用于选择鼠标时的点数 没有一个或多个按钮。删除和退格 键表示右键单击(即删除最后一个点),输入键 终止输入和任何其他键(窗口尚未使用) 经理)选择一个点。
我们可以设置n=0
让ginput等待鼠标中键点击而不是设定的点数。
奖励:设置timeout=0
会在默认30秒后停止ginput退出。我发现这对于复杂的情节很烦人。
示例代码:
import pylab
x = randn(10,10)
imshow(x)
points = ginput(0, 0)
# Select the points defining your region from the
# plot then middle click to terminate ginput.