如何在Matplotlib中为非数值数据的双轴设置指定排序
Matplotlib非数值散点图自定义轴类别顺序的解决方案
要将非数值散点图的X轴改为a-b-c、Y轴改为x-y-z排序,可通过以下Matplotlib原生方法实现:
实现代码
import matplotlib.pyplot as plt # 原始数据 categories_x = ["c", "a", "b", "c", "b"] categories_y = ["y", "z", "y", "x", "z"] # 定义目标轴类别顺序 x_order = ["a", "b", "c"] y_order = ["x", "y", "z"] # 将类别映射为目标顺序对应的索引 x_pos = [x_order.index(c) for c in categories_x] y_pos = [y_order.index(c) for c in categories_y] # 绘制散点并设置刻度 plt.scatter(x_pos, y_pos) plt.xticks(range(len(x_order)), x_order) plt.yticks(range(len(y_order)), y_order) plt.show()
核心逻辑
- 先把每个类别转换为它在目标顺序中的索引值,让散点位置严格对应目标顺序的位置;
- 再通过
xticks和yticks将数值刻度替换为对应的类别名称,最终呈现自定义排序的非数值轴。
该方案完全基于Matplotlib实现,无需依赖其他库,同时解决了双轴自定义排序的需求。
内容的提问来源于stack exchange,提问作者MangoNrFive
相关产品推荐
相关产品推荐

