我有以下功能:
def get_rgba_bitmap(fig):
fig.canvas.draw()
tab = fig.canvas.copy_from_bbox(fig.bbox).to_string_argb()
ncols, nrows = fig.canvas.get_width_height()
return numpy.fromstring(tab, dtype = numpy.uint8).reshape(nrows, ncols, 4)
有了这个功能,我可以创建一个图像的“地图”。请参阅link以了解我为什么需要“映射”和生成函数的答案的更多详细信息。绘制“地图”给出:
^{pr2}$用get_rgba_bitmap(fig)
创建的画布是包括灰色背景的整个图形。当绘制“地图”时,灰色背景也被包括在内,缩小了实际图像的大小。在一个单一图像的情况下,这对我来说并不重要,因为有一种方法可以解决它。但是,我现在需要几个子批次,这确实成了一个问题。在
因此,我现在需要的是一个只创建绘图帧画布的函数。记号和标签并不重要。我试图修改get_rgba_bitmap
函数,但它不能完全工作:
def test(fig, ax):
fig.canvas.draw()
tab = fig.canvas.copy_from_bbox(ax.bbox).to_string_argb()
bbox = ax.get_window_extent().transformed(fig.dpi_scale_trans.inverted())
width, height = bbox.width * fig.dpi, bbox.height * fig.dpi
ncols, nrows = width, height
return numpy.fromstring(tab, dtype = numpy.uint8).reshape(nrows + 1, ncols + 1, 4)
我认为问题在于ncols
和nrows
的错误值。不知道这是从哪里来的。在
如果我在reshape
中的ncols
和nrows
都添加1,则脚本将运行并生成一个与我想要的图像相近的图像。但是,“地图”不能正确地适应新的绘图框,从外观上看,在x
和y
中,它被关闭了1个像素。这对应于我需要添加到nrows
和ncols
的1。我该怎么解决这个问题?在
谢谢你的帮助
目前没有回答
相关问题 更多 >
编程相关推荐