如何获取matplotlib文本的宽度,包括填充边界框?

时间:2016-09-28 17:23:01

标签: python matplotlib

我知道如何获取文字的宽度:

import matplotlib.pyplot as plt
from matplotlib.patches import BoxStyle

xpos, ypos = 0, 0
text = 'blah blah'

boxstyle = BoxStyle("Round", pad=1)
props = {'boxstyle': boxstyle,
         'facecolor': 'white',
         'linestyle': 'solid',
         'linewidth': 1,
         'edgecolor': 'black'}

textbox = plt.text(xpos, ypos, text, bbox=props)
plt.show()
textbox.get_bbox_patch().get_width() # 54.121092459652573

但是,这并没有考虑填充。实际上,如果我将填充设置为0,我会得到相同的宽度。

boxstyle = BoxStyle("Round", pad=0)
props = {'boxstyle': boxstyle,
         'facecolor': 'white',
         'linestyle': 'solid',
         'linewidth': 1,
         'edgecolor': 'black'}

textbox = plt.text(xpos, ypos, text, bbox=props)
plt.show()
textbox.get_bbox_patch().get_width() # 54.121092459652573

我的问题是:如何获得周围盒子的宽度?或者如何在FancyBoxPatch的情况下获得填充的大小?

1 个答案:

答案 0 :(得分:3)

  

matplotlib.patches.FancyBboxPatch类类似于matplotlib.patches.Rectangle类,但它会绘制   矩形周围的一个奇特的盒子。

     

FancyBboxPatch.get_width()返回(内部)矩形的宽度

但是,FancyBboxPatchmatplotlib.patches.Patch的子类,提供了get_extents()方法:

  

matplotlib.patches.Patch.get_extents()

     

返回一个Bbox对象,用于定义Patch的轴对齐范围。

因此,您需要的是 textbox.get_bbox_patch().get_extents().width