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
相关产品推荐
相关产品推荐

