如何在Matplotlib图表旁添加可设置样式的文本面板?
在Matplotlib图表旁添加自定义样式文本面板的实现方法
可以直接用子图实现这个需求,关闭子图坐标轴后,就能在上面自由添加不同样式的文本,完全满足你对颜色、粗细、样式的自定义要求。
完整代码示例
import matplotlib.pyplot as plt # 创建画布,分主图和文本面板两个子图,调整宽度比例让面板更窄 fig, (ax_main, ax_text) = plt.subplots(ncols=2, figsize=(10, 6), width_ratios=[3, 1]) # 绘制主图表(示例内容,按需替换) ax_main.plot([1,2,3,4], [1,4,9,16], color='blue', linewidth=2) ax_main.set_title('主图表') ax_main.set_xlabel('X轴') ax_main.set_ylabel('Y轴') # 配置文本面板:隐藏坐标轴,可选设置背景色区分区域 ax_text.axis('off') ax_text.set_facecolor('#f0f0f0') # 添加不同样式的文本,用轴坐标定位(0-1范围,方便布局) # 加粗红色文本 ax_text.text(0.1, 0.9, '加粗红色文本', fontsize=12, fontweight='bold', color='#ff3333', transform=ax_text.transAxes) # 斜体绿色文本 ax_text.text(0.1, 0.7, '斜体绿色文本', fontsize=12, fontstyle='italic', color='#33aa33', transform=ax_text.transAxes) # 大号常规文本 ax_text.text(0.1, 0.5, '大号常规文本', fontsize=14, color='black', transform=ax_text.transAxes) # 下划线蓝色文本 ax_text.text(0.1, 0.3, '下划线蓝色文本', fontsize=12, color='#3333ff', underline=True, transform=ax_text.transAxes) plt.tight_layout() plt.show()
关键细节说明
width_ratios:调整主图和文本面板的宽度占比,数值按需修改即可。ax_text.axis('off'):彻底隐藏子图的坐标轴,只保留空白面板区域。transform=ax_text.transAxes:使用子图的相对坐标(左下角为(0,0),右上角为(1,1)),不用关心实际像素,布局更灵活。- 文本样式控制:
- 粗细:通过
fontweight设置,可选normal/bold/light等 - 样式:通过
fontstyle设置,可选normal/italic/oblique - 颜色:支持颜色名(如
'red')、十六进制值(如'#ff3333') - 额外效果:用
underline=True添加下划线,fontsize调整字号
- 粗细:通过
关于Textbox的说明
matplotlib.widgets.Textbox是用来做交互式输入的组件,适合让用户手动输入文本的场景,和你需要的「自定义样式文本展示面板」需求不匹配,所以用子图+text()的方式更合适。
内容的提问来源于stack exchange,提问作者Apollo11Mission
相关产品推荐
相关产品推荐

