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

如何用Matplotlib绘制带X标记的多水平数值线图表?

使用Matplotlib实现指定线图与刻度标记的方法

核心思路

针对你的需求,我们可以循环遍历每个ys中的y值,绘制对应水平线,并在xs子列表的每个x坐标位置添加标记(点或短线),同时同步更新x轴刻度。

实现代码示例

import matplotlib.pyplot as plt

# 定义数据
xs = [[5,7,9], [3,4,15,19]]
ys = list(range(len(xs)))  # 此处为 [0, 1]

# 创建画布与坐标轴
fig, ax = plt.subplots()

# 遍历每个y值和对应的x坐标列表
for y, x_coords in zip(ys, xs):
    # 绘制水平参考线
    ax.axhline(y=y, color='#333333', linestyle='-', linewidth=1)
    # 在每个x坐标位置添加标记点(也可以替换为垂直短线)
    ax.scatter(x_coords, [y]*len(x_coords), color='#007acc', marker='o', s=30)
    # 将所有x坐标添加到x轴刻度中
    ax.set_xticks(list(ax.get_xticks()) + x_coords)

# 设置y轴刻度为ys中的值
ax.set_yticks(ys)

# 添加坐标轴标签
ax.set_xlabel('X 坐标')
ax.set_ylabel('Y 坐标')

# 自动调整布局
plt.tight_layout()
plt.show()

可选调整:用垂直短线做刻度标记

如果想要更接近“刻度”的视觉效果,可以把scatter替换为垂直短线:

# 替换scatter的代码
ax.vlines(x=x_coords, ymin=y-0.08, ymax=y+0.08, color='#e74c3c', linewidth=2)

效果说明

  • 每条水平线对应ys中的一个y值,贯穿整个x轴范围
  • 每个x坐标位置会有清晰的标记(点或短线),直观对应xs子列表中的数值
  • x轴会包含所有xs里的整数,方便读取具体位置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 09:40:04