我知道如何获取文字的宽度:
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的情况下获得填充的大小?
答案 0 :(得分:3)
matplotlib.patches.FancyBboxPatch
类类似于matplotlib.patches.Rectangle
类,但它会绘制 矩形周围的一个奇特的盒子。
FancyBboxPatch.get_width()
返回(内部)矩形的宽度
但是,FancyBboxPatch
是matplotlib.patches.Patch
的子类,提供了get_extents()
方法:
matplotlib.patches.Patch.get_extents()
返回一个Bbox对象,用于定义Patch的轴对齐范围。
因此,您需要的是 textbox.get_bbox_patch().get_extents().width
。