如何在matplotlib / Python中直接将散点图叠加在jpg图像上?

时间:2011-02-22 02:21:20

标签: python image matplotlib overlay plot

我需要快速绘制jpg帧,这些帧作为跟踪算法的输出结果。与jpg帧的伴侣是包含简单(x,y)数据的文本文件,其定位正被跟踪的图像目标。我想使用matplotlib绘制jpg图像,然后覆盖(x,y)数据的散点图,该数据从文本文件中读取并存储到Pythonic列表中。下面是将绘制jpg图像的代码,但在我所做的所有matplotlib,scipy和PIL手册和帮助页面的搜索中,我找不到任何解释如何维护此绘图窗口并简单地覆盖散点图图像中各个(x,y)位置的简单标记。非常感谢任何帮助。

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

3 个答案:

答案 0 :(得分:42)

由于这个原因,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

答案 1 :(得分:10)

这应该有效:

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轴上的一个单位。 'o'是让plot函数使用圆而不是线的简便方法。

答案 2 :(得分:6)

我知道这已经得到了回答,但类似的zorder也可以。如果你想把一些东西放在散点图之上或之下

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

较低的zorder意味着它低于其他东西