Python 3.x Matplotlib文本艺术家-如何获得大小?(不使用pyplot) 背景
我已经移动了一些代码,只使用matplotlib,而不是pyplot(原因是它使用futures在多进程中生成png文件,而pyplot不是线程/进程安全的) 所以我是通过matplotlib.figure()而不是通过pyplot创建我的图形和轴。 我有一些代码可以在图形上绘制一个文本“表格”,一边右对齐,另一边左对齐。为了保持两侧之间的间距恒定,我之前在左侧的文本艺术家上使用了Python 3.x Matplotlib文本艺术家-如何获得大小?(不使用pyplot) 背景,python-3.x,matplotlib,Python 3.x,Matplotlib,我已经移动了一些代码,只使用matplotlib,而不是pyplot(原因是它使用futures在多进程中生成png文件,而pyplot不是线程/进程安全的) 所以我是通过matplotlib.figure()而不是通过pyplot创建我的图形和轴。 我有一些代码可以在图形上绘制一个文本“表格”,一边右对齐,另一边左对齐。为了保持两侧之间的间距恒定,我之前在左侧的文本艺术家上使用了get\u window\u extent(),以确定右侧的位置: # draw left text at
get\u window\u extent()
,以确定右侧的位置:
# draw left text at figure normalised coordinates, right justified
txt1 = figure.text(x, y, left_str,
ha='right', color=left_color, fontsize=fontsize)
# get the bounding box of that text - this is in display coords
bbox = txt1.get_window_extent(renderer=figure.canvas.get_renderer())
# get x location for right hand side offset from left's bbox
trans = figure.transFigure.inverted()
xr, _ = trans.transform((bbox.x1 + spacing, bbox.y0))
# draw right side text, using lhs's y value
figure.text(xr, y, right_str,
ha='left', color=right_color, fontsize=fontsize)
问题
我的问题是,现在我没有使用pyplot,上面的代码无法工作,因为figure.canvas.get_renderer()
无法返回渲染器,因为我没有设置渲染器,我只是在完成后使用figure.savefig(path)保存我的文件
那么,有没有一种方法可以在不设置渲染器的情况下找出人物中艺术家的边界框大小?
从图例来看,它允许您使用具有可变文本大小的边界框线,我认为有,但我找不到如何使用 我查看了上面的内容,并尝试了
matplotlib.artist.getp(txt1)
,但没有找到任何看似有用的属性