如何让Matplotlib中ax.text2D的文本等号垂直对齐?
解决ax.text2D文本等号对齐问题
要让所有等号处于同一垂直线,核心是避免手动加空格因比例字体宽度不一致导致的错位,推荐两种实用方法:
方法1:字符串格式化固定标签宽度
利用Python字符串格式化的对齐语法,强制标签部分占据固定宽度,自动填充空格对齐。修改代码如下:
textstr = '\n'.join(( f'{langbezeichnung}', f'Beprobung {datum_start} - {datum_end}', f'{anzahl_mst_para} Messstellen', f'{"BG":<9} = {bestimmungsgrenze} µg/L', # 左对齐,占9个字符宽度 f'{"75% SW":<9} = {warnwert} µg/L', f'{"SW":<9} = {grenzwert} µg/L' )) ax.text2D(0.645, 0.74, s=textstr, transform=ax.transAxes, fontsize=12, ha='left', va='top', bbox=dict(facecolor='white', alpha=1, edgecolor='black', linewidth=0.2, boxstyle='square'))
其中:<9表示将标签左对齐,强制占据9个字符宽度,不足部分自动填充空格,确保等号统一对齐。可根据标签实际长度调整数字(如改为10)优化间距。
方法2:使用等宽字体
给文本设置等宽字体(如monospace),让每个字符(包括空格)宽度完全一致,手动加空格也能对齐:
ax.text2D(0.645, 0.74, s=textstr, transform=ax.transAxes, fontsize=12, ha='left', va='top', fontfamily='monospace', bbox=dict(facecolor='white', alpha=1, edgecolor='black', linewidth=0.2, boxstyle='square'))
这种方法保留你原有的空格写法,但等宽字体风格可能与图表整体风格有差异,按需选择即可。
内容的提问来源于stack exchange,提问作者R.Muhrez
相关产品推荐
相关产品推荐

