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

如何在Matplotlib散点图中实现X/Y轴从0到最大值有序排列?

解决散点图轴无序的问题

嘿,我一眼就瞅出问题所在啦——你定义的X和Y都是字符串列表,matplotlib会把它们当成分类标签来处理,自然不会按数值大小排序。咱们来一步步修复这个问题:

步骤1:将字符串转换为数值类型

首先得把X和Y里的字符串转成整数,这样matplotlib才会把它们当作数值来处理:

import pandas as pd
import matplotlib.pyplot as plt

# 把字符串列表转成整数列表
X = list(map(int, ['1940','1300','1420','1680','1270','1850','1000','1100','1600','1000','2150','1900','2200','1100','860','1325','1350','1600','950','1250']))
Y = list(map(int, ['1116000','860000','818400','1000000','640000','1010000','600000','700000','1100000','570000','860000','1085000','1250000','850000','640000','900000','730000','750000','650000','680000']))

步骤2:(可选)让数据点按X轴排序展示

转成整数后,matplotlib已经会自动按数值范围生成有序的轴刻度了。如果还想让散点的绘制顺序是按X轴从小到大排列的,可以把X和Y配对后排序:

# 配对X和Y,然后按X的数值排序
sorted_pairs = sorted(zip(X, Y), key=lambda item: item[0])
X_sorted, Y_sorted = zip(*sorted_pairs)

# 绘制排序后的散点图
plt.scatter(X_sorted, Y_sorted)
plt.show()

原理说明

当你把字符串转成整数后,matplotlib会识别它们是数值变量,轴会自动从最小值到最大值生成刻度并排序,而不是按原始列表的字符串顺序来展示。哪怕你不额外排序数据点,轴的刻度也已经是正常的数值顺序啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:37:52