如何在python的matplotlib中计算文本对象的尺寸

时间:2016-02-11 04:10:06

标签: python matplotlib

我正在尝试计算文本对象的尺寸,给定数组中的字符,磅值和字体。这是在python中使用matplotlib包时将文本字符串放置在一个图中居中的方式,并且必须使用与绘制数据相同的单位。

1 个答案:

答案 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)

此脚本的结果如下所示: enter image description here