Python 获取x、y值和像素坐标之间的matplotlib映射
我试图使用matplotlib绘制一组线,最后我想在每一条线上创建一个边界框。我也在执行某些样式和转换,以保持情节对齐。问题是,毕竟在画图时,我无法找到我的线的实际值和像素坐标之间的映射 我的代码:Python 获取x、y值和像素坐标之间的matplotlib映射,python,matplotlib,Python,Matplotlib,我试图使用matplotlib绘制一组线,最后我想在每一条线上创建一个边界框。我也在执行某些样式和转换,以保持情节对齐。问题是,毕竟在画图时,我无法找到我的线的实际值和像素坐标之间的映射 我的代码: # get data lines = get_lines() # styling and transformation plt.gca().invert_yaxis() plt.gca().set_aspect('equal', adjustable='box
# get data
lines = get_lines()
# styling and transformation
plt.gca().invert_yaxis()
plt.gca().set_aspect('equal', adjustable='box')
plt.axes().get_xaxis().set_visible(False)
plt.axes().get_yaxis().set_visible(False)
plt.axes().spines['top'].set_visible(False)
plt.axes().spines['right'].set_visible(False)
plt.axes().spines['bottom'].set_visible(False)
plt.axes().spines['left'].set_visible(False)
# plot each line
for elem in lines:
ls = elem['line_values']
for subls in ls:
data = np.array(subls)
x,y=zip(*data)
img = plt.plot(x,y,linewidth=2,c='black')
# save the image
plt.savefig(output_path, bbox_inches='tight', dpi=100)
plt.gcf().clear()
保存的图像大小为640x480
,但任何行的最小和最大x值都在10000和20000之间
所以在最后(画完之后),我能找到一张实际值如何绘制在图像上的地图吗
谢谢。Matplotlib对象具有在坐标系之间转换的变换 在你的线条对象的某个地方,我想,在数据坐标系中,你会有最小和最大的X和Y坐标。可以将这些值转换为轴坐标系、地物坐标系,甚至显示坐标系(除非处于全屏模式,否则原点将位于Matplotlib图形窗口之外) 如果需要整个640 x 480图像,需要以像素为单位计数,并且希望左上角作为原点,请使用当前图形的transFigure()方法 在另一个主题上,我不太明白你在用img变量做什么,它应该是一个Line2D对象 看看这个,我建议你提出你的问题,以便更好地解释你的问题。