You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Matplotlib内嵌轴绘制带文本标签柱状图报错原因及解决咨询

问题原因与解决办法

原因

常规子图(axs[1]这类标准Axes对象)调用bar()时,Matplotlib会自动将字符串类型的x轴标签映射为整数索引(0、1、2...)作为实际绘图位置,再把字符串设置为刻度标签。但内嵌轴(inset axis)的底层处理逻辑和常规Axes存在差异,不会自动完成字符串到整数索引的转换,直接传入字符串标签就会触发类型转换错误。

解决办法

手动完成字符串标签到整数位置的映射,再显式设置刻度标签,代码示例如下:

# 假设已定义labels和MAES变量
labels = ["Model A", "Model B", "Model C"]
MAES = [2.3, 1.9, 2.7]

# 创建内嵌轴(示例创建方式,可根据需求调整位置和大小)
ax_in = axs[1].inset_axes([0.6, 0.6, 0.35, 0.35])

# 生成对应字符串标签的整数位置
x_pos = range(len(labels))
# 用整数位置绘制柱状图
ax_in.bar(x_pos, MAES)
# 绑定刻度位置与字符串标签
ax_in.set_xticks(x_pos)
ax_in.set_xticklabels(labels)
# 可选:旋转标签避免重叠
ax_in.tick_params(axis='x', rotation=45)

通过这种方式,就能在内嵌轴中正常绘制带字符串标签的柱状图,效果与常规子图一致。

内容的提问来源于stack exchange,提问作者oscarcapote

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 15:03:34