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

如何在Seaborn中手动设置X轴非均匀间隔?

实现非均匀X轴的解决方案

要实现你需要的X轴非均匀显示效果,核心思路是用数据的索引作为绘图的X轴位置(保证视觉间距可控),再将X轴刻度标签替换为原始X值,这样就能自由调整不同区间的视觉占比。

修改后的完整代码

import pandas as pd
import seaborn as sns

data = pd.DataFrame({'y': {0: 0.8285, 1: 0.869, 2: 0.8781, 3: 0.8806, 4: 0.8825, 5: 0.8831},'x': {0: 5764, 1: 22021, 2: 56906, 3: 114157, 4: 289474, 5: 4755584}})

sns.set(rc={'figure.figsize':(6,3.5)}, style="white")

# 用数据索引作为X轴位置,保证视觉间距均匀
ax = sns.lineplot(data=data, x=data.index, y="y", dashes=False, markersize=8, marker="o")

# 设置X轴刻度为索引位置,刻度标签替换为原始X值
ax.set_xticks(data.index)
ax.set_xticklabels(data['x'].values)

ax.grid(axis='x', linestyle='dotted')

ax.set_xlabel("X", fontsize=16)
ax.set_ylabel("Y", fontsize=16)

效果说明

  • 前5个数据点(对应原始X值5764到289474)在视觉上会占据相同的间距,相当于扩展了这个区间的显示范围;
  • 最后一个数据点(原始X值4755584)和前一个点的视觉间距与前面的点一致,实现了对大X值区间的压缩,避免曲线过于陡峭。

如果需要更精细的间距调整,可以手动指定set_xticks的位置,比如将最后一个刻度的位置设为5.5,进一步压缩其占比:

ax.set_xticks([0,1,2,3,4,5.5])
ax.set_xticklabels(data['x'].values)

内容的提问来源于stack exchange,提问作者namespace-Pt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 04:31:30