web-dev-qa-db-ja.com

matplotlib / Pythonでjpg画像の上に散布図を直接オーバーレイするにはどうすればよいですか?

トラッキングアルゴリズムの出力として生成されるjpgフレームをすばやくプロットする必要があります。 jpgフレームのコンパニオンは、追跡されている画像ターゲットを特定する単純な(x、y)データを含むテキストファイルです。 matplotlibを使用してjpg画像をプロットし、テキストファイルから読み取られてPythonicリストに保存される(x、y)データの散布図をオーバーレイします。以下はjpg画像をプロットするコードですが、matplotlib、scipy、PILのマニュアルとヘルプページのすべての精査で、このプロットウィンドウを維持し、散布図を単純にオーバーレイする方法を説明するものが見つかりません画像内のさまざまな(x、y)位置にある単純なマーカー。どんな助けも大歓迎です。

import matplotlib.pyplot as plt;
im = plt.imread(image_name);
implot = plt.imshow(im);
plt.show()
28
ely

pyplot.scatter()関数は、次の理由により調整されました。

import matplotlib.pyplot as plt
im = plt.imread(image_name)
implot = plt.imshow(im)

# put a blue dot at (10, 20)
plt.scatter([10], [20])

# put a red dot, size 40, at 2 locations:
plt.scatter(x=[30, 40], y=[50, 60], c='r', s=40)

plt.show()

詳細については、 documentation をご覧ください。

43
lothario

これは動作するはずです:

import matplotlib.pyplot as plt
im = plt.imread('test.png')
implot = plt.imshow(im)
plt.plot([100,200,300],[200,150,200],'o')
plt.show()

画像の各ピクセルはx、y軸上の1単位であることに注意してください。 'o'は、線の代わりに円を使用するplot関数を取得する簡単な方法です。

10
Paul

私はこれが回答されたことを知っていますが、同様にzorderも機能します。散布図の上または下に何かを置きたい場合に最適です

import matplotlib as plt
im = plt.imread(image_name)
plt.imshow(im,zorder=1)
plt.scatter(x,y,zorder=2)
plt.show()

より低いzorderは、他のものより下にあることを意味します

7
Ceddrick