matplotlib 要绘制的点顺序不对[重复]

h9a6wy2h  于 2023-10-24  发布在  其他
关注(0)|答案(2)|浏览(100)

此问题已在此处有答案

Given parallel lists, how can I sort one while permuting (rearranging) the other in the same way?(16个回答)
data points connected in wrong order in line graph(1个答案)
2小时前关闭
从一个实验中得到了一些数据点,但是它们不是按顺序排列的,所以图之间的线是不正确的,我需要在X轴中按递增顺序绘制它们。

C=[0.5,4,2,1,3,8,6,10]
D=[20,2,2,10,0.3,2.5,0.8,1]
%matplotlib inline
import matplotlib.pyplot as plt
#plot obtained from given data points
plt.plot(C,D)

## required plot 
A=[0.5, 1, 2, 3, 4, 6, 8, 10]
B=[20, 10, 2, 0.5, 2, 0.8, 2.5, 1]
plt.plot(A,B)
cgvd09ve

cgvd09ve1#

使用pandas的解决方案。我建议将来使用DataFrames进行绘图任务。

from matplotlib import pyplot as plt
import pandas as pd

C= [0.5, 4, 2, 1, 3, 8, 6, 10]
D= [20, 2, 2, 10, 0.3, 2.5, 0.8, 1]

xy = pd.DataFrame({'x': C, 'y': D})
xy.sort_values('x', inplace=True)

plt.plot(xy['x'], xy['y'])
plt.show()

jdzmm42g

jdzmm42g2#

您的C没有排序,因此默认情况下,由连续线连接的点在plot(C,D)的输出中看起来很乱。我个人会使用np.argsort函数来获取C的排序索引,并使用它们来绘制C和D,如下所示(仅显示添加的相关线):

import numpy as np
C = np.array([0.5,4,2,1,3,8,6,10])
D = np.array([20,2,2,10,0.3,2.5,0.8,1])
plt.plot(sorted(C), D[np.argsort(C)], 'b')

输出

相关问题