如何在Matplotlib中按x轴顺序而非数组顺序连接散点图的点?
解决按X轴顺序连接散点的问题
完全可以实现!你现在的问题是plot函数默认会严格按照你传入的x0和y0数组的顺序来连接点,所以如果x0本身不是从小到大排列的,连线就会来回跳跃形成锯齿。只需要先把数据按X轴值排序,再绘图就好啦。
下面给你两种常用的实现方式:
方法一:用NumPy排序(推荐,适合数值数组)
如果你的x0和y0是NumPy数组,用argsort()获取排序索引是最高效的方式:
import numpy as np # 获取按x0从小到大排序的索引 sort_indices = np.argsort(x0) # 用索引重新排列x和y数组 sorted_x = x0[sort_indices] sorted_y = y0[sort_indices] # 用排序后的数组绘图 plot0.plot(sorted_x, sorted_y, 'ko-', lw=1, color="red", label="dummy")
方法二:用Python内置工具(适合普通列表)
如果你的数据是普通Python列表,用zip+sorted也能轻松搞定:
# 将x和y打包成元组,按x值排序 sorted_pairs = sorted(zip(x0, y0), key=lambda item: item[0]) # 拆分回排序后的x和y列表 sorted_x, sorted_y = zip(*sorted_pairs) # 绘图(如果需要数组格式,可以转成np.array) plot0.plot(sorted_x, sorted_y, 'ko-', lw=1, color="red", label="dummy")
这样处理后,连线就会严格从左到右(X轴从小到大)依次连接所有点,再也不会出现锯齿状的线条啦。
内容的提问来源于stack exchange,提问作者infoclogged
相关产品推荐
相关产品推荐

