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。

マウスに1つまたは複数のボタンがない場合は、キーボードを使用してポイントを選択することもできます。削除キーとバックスペースキーは右クリックのように機能し(つまり、最後のポイントを削除)、Enterキーは入力を終了し、他のキー(ウィンドウマネージャーでまだ使用されていない)はポイントを選択します。

設定さ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.
于 2012-06-08T09:58:41.670 に答える