如何绘制日期与字母等级的折线图?
如何绘制日期与字母等级的折线图?
我太懂你这种困扰了——本来用整数做折线图顺得很,换成字母等级就卡壳了,毕竟图表工具默认把字母当普通文本,根本认不出它们的「进步逻辑」。下面给你几个实操性拉满的办法,不管你用Excel、Google Sheets还是其他常用表格工具都能用:
方法一:给字母等级配隐藏的数值辅助列(最推荐!)
这是最稳妥的方案,既能让图表正确识别趋势,又能在最终图表上显示字母等级:
- 第一步:新增辅助列,给每个字母等级映射数值。比如按你的规则(A最好,E最差),设置
A=5,B=4,C=3,D=2,E=1 - 第二步:调整你的数据结构,把数值列和字母列对应放好(数值列后面可以隐藏,不影响显示):
| 日期 | Module1数值 | Module1等级 | Module2数值 | Module2等级 | Module3数值 | Module3等级 |
|---|---|---|---|---|---|---|
| 01.06.2024 | 1 | E | 2 | D | 3 | C |
| 01.07.2024 | 1 | E | 2 | D | 3 | C |
| 01.08.2024 | 3 | C | 4 | B | 5 | A |
| 01.08.2024 | 3 | C | 5 | A | 5 | A |
- 第三步:选中日期列 + 所有数值辅助列创建折线图,这时候折线会完美呈现每个模块的进步趋势
- 第四步:把Y轴的数值换成字母等级。以Excel为例:右键点击Y轴 → 「设置坐标轴格式」 → 切换到「数字」选项卡 → 选择「自定义」,输入格式代码
[=5]"A";[=4]"B";[=3]"C";[=2]"D";[=1]"E",确定后Y轴就会显示字母啦!
方法二:手动设置字母的排序规则(适合轻量需求)
如果不想加辅助列,部分工具支持手动定义文本类别的排序逻辑:
- 先按你原来的方式选中字母数据创建折线图,这时候Y轴的字母排序可能混乱
- 找到图表的「数据设置」或「坐标轴设置」选项,找到Y轴的类别排序,手动把顺序设为
E、D、C、B、A(对应从差到好的逻辑) - 不过要注意:有些工具里文本类别的折线图可能会出现断点,或者无法正确识别连续趋势,所以这个方法更适合临时快速做图
方法三:Excel专属自定义序列技巧
要是你用的是Excel,可以先给字母等级设置专属排序序列:
- 点击「文件」→「选项」→「高级」→ 拉到最下面找到「编辑自定义列表」,输入
E,D,C,B,A后点击添加保存 - 选中你的字母等级列,右键→「排序」→「自定义排序」,选择你刚创建的序列,把字母按逻辑排序
- 再创建折线图,Excel就会按照你定义的序列识别字母的权重,不过还是配合辅助列的方法效果最稳定
小补充:如果用代码绘图(比如Python matplotlib)
要是你用代码生成图表,逻辑也是一样的:先把字母转成数值,绘图后再把Y轴刻度改回字母。举个简单例子:
# 先定义字母和数值的映射 grade_map = {'E': 1, 'D': 2, 'C': 3, 'B': 4, 'A': 5} # 假设你已经有了日期列表和各模块的等级列表 module1_grades = ['E', 'E', 'C', 'C'] dates = ['01.06.2024', '01.07.2024', '01.08.2024', '01.08.2024'] # 把字母转成数值 y_values = [grade_map[g] for g in module1_grades] # 绘制折线图 import matplotlib.pyplot as plt plt.plot(dates, y_values, label='Module 1') # 把Y轴刻度换成字母 plt.yticks([1,2,3,4,5], ['E', 'D', 'C', 'B', 'A']) plt.legend() plt.show()
备注:内容来源于stack exchange,提问作者user3021830




