matplotlib ginput()具有未定义的点数

时间:2012-06-06 17:23:50

标签: python matplotlib

我需要使用matplotlib函数ginput()在一个图中定义一个区域。然而,因为它是一个不规则的形状,并且在每个图中都不同,所以我不能确定手头有多少点,即

x = randn(10,10)
imshow(x)
n = I don't know yet
points = ginput(n)

任何人都知道如何去做? 谢谢 戴夫

1 个答案:

答案 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.