我正在尝试计算文本对象的尺寸,给定数组中的字符,磅值和字体。这是在python中使用matplotlib包时将文本字符串放置在一个图中居中的方式,并且必须使用与绘制数据相同的单位。
答案 0 :(得分:0)
正如评论中所指出的,matplotlib允许居中文本(和其他对齐)。请参阅文档here。
如果你真的需要文本对象的尺寸,这里有一个快速的解决方案,它依赖于绘制文本一次,获取其尺寸,将它们转换为数据尺寸,删除原始文本,然后重新绘制以文本为中心的文本数据坐标。 This question提供了有用的解释。
import matplotlib.pyplot as plt
plt.ion()
fig = plt.figure()
ax = fig.add_subplot(111)
xlim = ax.get_xlim()
ylim = ax.get_ylim()
textToPlot = 'Example'
t = ax.text(.5*(xlim[0] + xlim[1]), .5*(ylim[0] + ylim[1]), textToPlot)
transf = ax.transData.inverted()
bb = t.get_window_extent(renderer = fig.canvas.renderer)
bb_datacoords = bb.transformed(transf)
newX = .5*(xlim[1] - xlim[0] - (bb_datacoords.x1 - bb_datacoords.x0))
newY = .5*(ylim[1] - ylim[0] - (bb_datacoords.y1 - bb_datacoords.y0))
t.remove()
ax.text(newX, newY, textToPlot)
ax.set_xlim(xlim)
ax.set_ylim(ylim)