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

如何手动调整Matplotlib散点图X轴刻度间距并保留原数值等距显示

解决Matplotlib散点图X轴刻度拥挤问题

针对X轴数值呈指数变化导致刻度重叠的情况,你可以通过自定义X轴刻度位置与标签的方式,让刻度等距排列同时保留原有数值,具体操作如下:

步骤1:提取并整理X轴的唯一数值

先从数据中取出fold_dil的所有唯一值,按从小到大排序(确保刻度顺序正确):

# 提取并排序fold_dil的唯一值
unique_x = sorted(rep1['fold_dil'].unique())
# 如果rep2的fold_dil范围更大,也可以合并两个数据集的x值取唯一值
# unique_x = sorted(pd.concat([rep1['fold_dil'], rep2['fold_dil']]).unique())

步骤2:设置自定义刻度

因为两个子图共享X轴(sharex=True),只需在任意一个子图上设置X轴刻度即可,修改后的完整代码如下:

import matplotlib.pyplot as plt
import pandas as pd  # 假设你的rep1、rep2是DataFrame

ads, axs = plt.subplots(2, sharex=True)
axs[0].scatter(x='fold_dil', y='foci', data=rep1)
axs[1].scatter(x='fold_dil', y='foci', data=rep2)

# 设置自定义X轴刻度
unique_x = sorted(rep1['fold_dil'].unique())
axs[1].set_xticks(unique_x)
axs[1].set_xticklabels(unique_x)  # 显示原有数值作为刻度标签

# 可选:旋转刻度标签避免重叠(如果数值较长)
plt.xticks(rotation=45, ha='right')

plt.show()

补充:对数刻度方案(另一种思路)

如果希望X轴按指数比例等距显示,也可以将X轴设置为对数刻度,这样指数变化的数值会自动等距排列,同时保留原有数值标签:

ads, axs = plt.subplots(2, sharex=True)
axs[0].scatter(x='fold_dil', y='foci', data=rep1)
axs[1].scatter(x='fold_dil', y='foci', data=rep2)

# 设置X轴为对数刻度
axs[1].set_xscale('log')
# 可选:设置自定义对数刻度标签,只显示数据中存在的数值
axs[1].set_xticks(unique_x)
axs[1].set_xticklabels(unique_x)

plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 19:10:30