5

我需要使用 matplotlib 函数 ginput() 在绘图中定义一个区域。但是,由于它是不规则的形状,并且在每个图中都会有所不同,所以我无法预先定义有多少点,即

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

有谁知道该怎么做??谢谢戴夫

4

1 回答 1

8

从文档中,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阻止 ginput 在默认 30 秒后退出。对于复杂的情节,我觉得这很烦人。

示例代码:

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.
于 2012-06-08T09:58:41.670 回答