我拍摄了一张图片并使用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与实数或x-y轴的单位联系起来?
答案 0 :(得分:4)
您可以使用patches创建相对于数据坐标大小的标记。
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()