Matplotlib中分类X轴标签重复问题:原因及解决问询
解决X轴标签重复问题
你的X轴标签重复(每个分类标签如Cats、Dogs、Pigs在X轴上显示两次),根源在于使用brokenaxes时两次绘图调用的X轴处理逻辑冲突:
bax.plot(compositions, a_vals)用字符串列表作为X轴输入,自动生成了带分类标签的刻度- 循环里的
bax.errorbar(i, a_vals[i])用数值索引作为X轴,再次触发了刻度生成机制,导致标签被重复渲染
修改后的代码
import matplotlib.pyplot as plt from brokenaxes import brokenaxes a = { # DATA -- 'CATEGORY': (VALUE, ERROR) 'Cats': (1, 0.105), 'Dogs': (2, 0.023), 'Pigs': (2.6, 0.134) } compositions = list(a.keys()) a_vals = [i[0] for i in a.values()] a_errors = [i[1] for i in a.values()] fig = plt.figure(figsize=(8, 6)) bax = brokenaxes(ylims=((0,1.5), (1.7, 3)), hspace = 0.05) # 统一用数值索引绘图,避免自动生成重复标签 bax.plot(range(len(compositions)), a_vals, marker = 'o') for i in range(len(a_errors)): bax.errorbar(i, a_vals[i], yerr = a_errors[i], capsize = 5, fmt = 'red') # 手动设置X轴刻度与标签 bax.set_xticks(range(len(compositions))) bax.set_xticklabels(compositions)
说明
- 先统一用数值索引作为X轴坐标绘图,避免两次绘图分别生成刻度
- 最后通过
set_xticks和set_xticklabels一次性设置标签,彻底解决重复问题 - 你之前尝试的方法无效,是因为没有先统一X轴的绘图逻辑,手动设置的标签被重复叠加的刻度覆盖
内容的提问来源于stack exchange,提问作者DarkRunner
相关产品推荐
相关产品推荐

