Python 获取x、y值和像素坐标之间的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

我试图使用matplotlib绘制一组线,最后我想在每一条线上创建一个边界框。我也在执行某些样式和转换,以保持情节对齐。问题是,毕竟在画图时,我无法找到我的线的实际值和像素坐标之间的映射

我的代码:

    # 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对象

看看这个,我建议你提出你的问题,以便更好地解释你的问题。