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

Dav*_*ave 5 python matplotlib

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

x = randn(10,10)
imshow(x)
n = I don't know yet
points = ginput(n)
Run Code Online (Sandbox Code Playgroud)

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

aar*_*ren 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.
Run Code Online (Sandbox Code Playgroud)