如何在Matplotlib中使用内部含文本的自定义标记?
在Matplotlib中给Mathtext添加形状包裹的实现方法
当然可以实现你想要的效果!咱们都知道Matplotlib支持用$...$格式的mathtext渲染数学标记,要把这类文本包裹在圆形、矩形或者其他形状里(类似注册商标符号的样式),用分层绘制的思路就能轻松搞定。
具体解决方案
核心思路就是先画一个尺寸稍大的形状(作为“容器”),再在同一个位置叠放你的mathtext文本,让文本刚好落在形状内部。举个实际的代码例子:
import matplotlib.pyplot as plt # 创建画布和坐标轴 fig, ax = plt.subplots() # 第一步:绘制方形包裹标记 # s控制形状大小,marker选's'是方形,选'o'就是圆形 ax.scatter(0.5, 0.5, s=220, marker='s', color='white', edgecolor='black') # 第二步:在同一位置绘制mathtext文本 ax.text(0.5, 0.5, '$T$', ha='center', va='center', fontsize=14) plt.show()
调整技巧
- 如果你想要圆形包裹,只需要把代码里的
marker='s'改成marker='o'即可; - 通过调整
scatter的s参数可以改变形状大小,配合text的fontsize参数,能让文本和形状的比例更协调; - 还可以修改形状的
color(填充色)、edgecolor(边框色),以及文本的颜色,来适配你的绘图风格。
亲测这个方法能完美实现你要的效果,我自己也用这个思路解决过类似的标记需求~
内容的提问来源于stack exchange,提问作者Neeraj Hanumante
相关产品推荐
相关产品推荐

