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

如何在Matplotlib中沿Y轴对齐数据并设置对应X轴刻度

问题:将Matplotlib曲线改为纵向分布并设置X轴刻度

当前绘制的曲线沿横轴分布,需要将曲线强制沿纵轴分布,并在X轴设置对应的员工编号刻度。

当前效果

当前效果

目标效果

目标效果

原MWE代码

import matplotlib.pyplot as plt
import numpy as np

employees = np.arange(0, 12, 76)
sub_one_grades = np.random.normal(0, 1, 76) + 10 
sub_two_grades = np.random.normal(0, 1, 76) + 15
sub_three_grades = np.random.normal(0, 1, 76) + 30

# plot
plt.plot(sub_one_grades)
plt.plot(sub_two_grades)
plt.plot(sub_three_grades)

#plt.yticks(employees) #<------REQUIRED, but not working

plt.show()

解决方案

问题分析

  1. 原代码中employees = np.arange(0, 12, 76)生成的数组仅包含[0],和分数数组的76个元素长度不匹配,这是刻度设置无效的核心原因。
  2. 默认plt.plot(分数数组)会用数组索引作为X轴,导致曲线沿横轴延伸,不符合需求。

修改后的代码

import matplotlib.pyplot as plt
import numpy as np

# 生成0到75共76个员工编号,匹配分数数组长度
employees = np.arange(0, 76)
sub_one_grades = np.random.normal(0, 1, 76) + 10 
sub_two_grades = np.random.normal(0, 1, 76) + 15
sub_three_grades = np.random.normal(0, 1, 76) + 30

# 明确指定X轴为员工编号,Y轴为分数,曲线将沿纵轴分布
plt.plot(employees, sub_one_grades, label='科目1')
plt.plot(employees, sub_two_grades, label='科目2')
plt.plot(employees, sub_three_grades, label='科目3')

# 设置X轴刻度,每10个员工显示一个刻度,避免重叠
plt.xticks(np.arange(0, 76, 10))
# 添加图例区分不同科目
plt.legend()
# 添加轴标签提升可读性
plt.xlabel('员工编号')
plt.ylabel('分数')

plt.show()

关键说明

  • 通过plt.plot(employees, 分数数组)明确指定X轴为员工编号、Y轴为分数,让曲线以纵轴为核心分布。
  • 修正员工编号数组的生成逻辑,确保和分数数组长度一致。
  • 用plt.xticks设置刻度间隔,解决刻度密集重叠的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 15:00:57