要绘制的点顺序不正确

时间:2018-09-04 11:50:20

标签: python matplotlib

从expt获得的数据点很少,但是它们的顺序不正确,因此绘图之间的线不正确, 我需要将它们绘制成图,在Xaxis中按升序排列

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)

2 个答案:

答案 0 :(得分:0)

您的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')

输出

enter image description here

答案 1 :(得分:0)

使用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()

enter image description here