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

如何在Python绘图中跳过指定X值且不压缩前置X轴刻度?

解决Matplotlib中X轴跳过中间值且不压缩前序刻度的问题

要实现X轴正常显示[5,10,15]且间距不压缩,同时跳过中间值直接显示300,最直接的方式是自定义刻度+添加断裂标记,既保留小数值的正常间距,又明确提示中间有数值跳过。以下是可直接运行的代码:

import matplotlib.pyplot as plt

# 替换成你的实际数据
x = [5, 10, 15, 300]
y = [2, 4, 3, 5]

fig, ax = plt.subplots(figsize=(8, 4))

# 绘制图表(可替换为bar/scatter等你需要的类型)
ax.plot(x, y, marker='o', color='#1f77b4')

# 强制显示指定的X刻度
ax.set_xticks(x)
ax.set_xticklabels([str(num) for num in x])

# 调整X轴范围,保证前三个刻度有足够间距,同时容纳300
ax.set_xlim(3, 305)

# 添加断裂标记(两条斜线),直观提示中间跳过了数值
gap_size = .015
ax.plot((1-gap_size, 1+gap_size), (-gap_size, gap_size), transform=ax.transAxes, color='black', clip_on=False)
ax.plot((1-gap_size, 1+gap_size), (1-gap_size, 1+gap_size), transform=ax.transAxes, color='black', clip_on=False)

# 限制底部轴脊只覆盖到15的位置,彻底避免前三个刻度被压缩
ax.spines['bottom'].set_bounds(5, 15)

plt.tight_layout()
plt.show()

关键逻辑说明:

  • set_xticks直接指定要显示的X值,避免Matplotlib自动生成密集刻度
  • set_xlim扩展X轴范围,让300能正常显示的同时,前三个小值不会被挤在一起
  • 断裂标记用两条斜线明确提示读者中间有数值跳过,避免误解刻度间距
  • spines['bottom'].set_bounds(5,15)让底部轴脊只覆盖到15,300的刻度单独在右侧,保证前三个刻度的间距和正常线性轴完全一致

如果需要绘制柱状图,只需把ax.plot替换为ax.bar(x, y)即可,核心逻辑通用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 03:23:13