2

我使用 OpenCv 拍摄了一张图像并从中提取了一些特征。我想将这些点及其各自的区域(它们是真实的像素值)重新绘制到散点窗口中,然后保存。不幸的是,当我绘制这些点时,它们会调整大小以保持更明显。如果我放大它们会调整大小。我想保存整个图形,保留像素(x,y)坐标与绘制点大小的实际比率。

例如:

import matplotlib.pyplot as plt   
x=[5000,10000,20000]
y=[20000,10000,5000]
area_in_pixels=[100,200,100]
scatter(x,y,s=area_in_pixels)

我希望这能在图像上产生小点。它们应该跨越 10 个 xy 单位。但是,它产生的点很大,并且似乎跨越了 1000 个 xy 单位。

我尝试使用以下方法调整图像大小:

plt.figure(figsize=(10,10))

这似乎稍微调整了点相对于它们的位置的大小。但我不确定我会选择什么比例来使其准确。plt.figsave 上的 DPI 设置似乎使保存的图像更大,但似乎不会改变相对光斑大小。

换一种方式问,是否有另一种方法可以将点 ^ 2 中的 s 与实数或 xy 轴的单位相关联?

4

1 回答 1

4

您可以使用补丁创建相对于数据坐标大小的标记。

import matplotlib.pyplot as plt   
from matplotlib.patches import Circle


xData=[5000,10000,20000, 15000]
yData=[20000,10000,5000, 15000]
radius_in_pixels=[100,200,100, 1000] # Circle takes radius as an argument. You could convert from area. 


fig = plt.figure()
ax = fig.add_subplot(111, aspect='equal')

for x, y, r in zip(xData, yData, radius_in_pixels):
    ax.add_artist(Circle(xy=(x, y), radius = r))      

plt.xlim(0, max(xData) + 200)
plt.ylim(0, max(yData) + 200)
plt.show()

使用圆形补丁的散点图

于 2013-10-28T22:18:16.020 回答