Matplotlib实现子图标题框路径效果:带阴影框标题绘制问题
解决Matplotlib子图标题带阴影框的问题
我来帮你搞定带阴影的子图标题!你现在的思路方向是对的,但其实Matplotlib的text组件自带的bbox参数就支持阴影效果,不用额外绘制矩形补丁,这样代码更简洁,还能保证文本和阴影框完全对齐。
简化版解决方案(直接用bbox阴影)
这是最直接的实现方式,只需要在bbox字典里加入shadow=True就能开启阴影:
import matplotlib.pyplot as plt fig = plt.figure() ax = plt.subplot() # 带阴影框的子图标题"A" ax.text(0.1, 0.55, 'A', fontsize=14, transform=ax.transAxes, # 用子图相对坐标,位置更稳定 bbox=dict(boxstyle="square,pad=0.3", # pad控制框与文本的间距 ec='k', # 边框颜色 fc='#FFFFFF', # 框内填充色 shadow=True)) # 开启阴影效果 plt.show()
自定义阴影样式(进阶)
如果想要更个性化的阴影(比如调整偏移量、模糊度、颜色),可以用boxshadow参数来精细化控制:
import matplotlib.pyplot as plt fig = plt.figure() ax = plt.subplot() ax.text(0.1, 0.55, 'A', fontsize=14, transform=ax.transAxes, bbox=dict(boxstyle="square,pad=0.3", ec='k', fc='#FFFFFF', # 自定义阴影属性 boxshadow=dict(shadow_offset=(2, -2), # 阴影向右下偏移 shadow_blur=3, # 阴影模糊程度 shadow_color='gray', # 阴影颜色 shadow_alpha=0.6))) # 阴影透明度 plt.show()
小提示
- 用
transform=ax.transAxes是非常明智的选择,这样坐标是相对于子图的比例(0到1),不管子图怎么缩放或调整尺寸,标题的相对位置都不会乱。 - 如果你的Matplotlib版本比较旧,
shadow=True可能需要替换为boxshadow=True,不过目前主流新版本都支持前者。
内容的提问来源于stack exchange,提问作者Han Zhengzu
相关产品推荐
相关产品推荐

