You need to enable JavaScript to run this app. Matplotlib设置固定0-14区间Y轴并显示全部自定义刻度标签
优惠活动
大模型
产品
解决方案
定价
更多

Matplotlib设置固定0-14区间Y轴并显示全部自定义刻度标签

问题原因

你遇到的标签显示不全的核心原因是Matplotlib默认会根据实际绘制的数据的取值范围自动裁剪坐标轴显示范围,若你的散点数据Y值没有覆盖0-14全区间,超出数据范围的刻度和对应标签就会被隐藏,你绘制白色散点的本质是强行把Y轴显示范围撑到了目标区间,用内置的set_ylim方法即可直接实现相同效果。

优化后的实现方案

你还可以直接在设置yticks时同步传入自定义标签,不需要读取默认标签再修改,代码更简洁不易出错:

import matplotlib.pyplot as plt
import numpy as np

# 这里替换为你自己的真实散点数据
n = 20
real_x = np.random.randint(0, n, size=30)
real_y = np.random.randint(0, 14, size=30)

fig, ax = plt.subplots()
# 核心配置1:固定Y轴显示范围为0到14
ax.set_ylim(0, 14)
# 定义Y轴刻度位置:0到14间隔1,共15个刻度点
y_tick_pos = np.arange(0, 15, 1)
# 自定义刻度对应标签,索引和刻度位置一一对应,不需要显示的位置可填空字符串
y_tick_labels = [
    '',  # Y=0位置
    'Not Detected',
    'A/G',
    'G/G',
    'C/T',
    'C/C',
    'A/A',
    '-1',
    'ε3/ε3',
    'A/C',
    'T/T',
    'C/G',
    'ε2/ε3',
    'G/T',
    ''   # Y=14位置
]
# 核心配置2:一次性设置刻度位置和对应标签
ax.set_yticks(y_tick_pos, labels=y_tick_labels)

# 绘制真实散点
ax.scatter(real_x, real_y)

# 可选:如果标签太长被截断,添加以下代码自动调整布局
# plt.tight_layout()

plt.show()

原代码问题说明

  1. 你之前使用np.arange(0, 14, 1)生成刻度是左闭右开区间,只会生成0到13的14个刻度,缺少Y=14的刻度点
  2. 没有显式固定Y轴范围,导致轴范围随实际数据自动收缩,是标签显示不全的核心原因

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 04:15:03