我想在同一图上绘制多个数据集,但所有图都在相同的y范围内

时间:2019-02-11 20:47:52

标签: python matplotlib

我正在尝试绘制此数据集。数据集是从列表产生的数组。如果(列表的)第二索引中的项是某个字符串,则它将通过第三索引(y)绘制第0索引(x)。然后,在第二个索引中具有相同字符串的所有坐标都将是某种颜色。

所以基本上我有一个飞行图与5个不同接收器的值的关系图。每个接收器都有不同的颜色,都使用相同的y范围

现在无法生成该图,但是我的问题是,当我绘制它时,几乎就像我在一个图上绘制5个单独的图一样,因为它在底部绘制了第一个接收器x,y,并且然后下一个接收器将x,y绘制在第一个接收器的正上方,好像它具有一个全新的y范围,其余接收器依此类推。

我曾尝试使用y_lim(0,1000000),但这只会生成一个图,所有图都收缩在底部,即使我的值之一超过了900000。即使我将其更改为低得多的最大数,仍然全部陷在底部

im还可以将数组更改为列表并将其绘制出来,这为我提供了我正在寻找的正确y范围,但是现在它不会为不同的接收器着色。

These are the values in CSFlistremote:
[['TF01', '311', '2EAP', '763243', 'Cycle Slip Frequency'], ['TF01', '311', '3EAP', '763540', 'Cycle Slip Frequency'], ['TF01', '311', 'j078', '217278', 'Cycle Slip Frequency'], ['TF01', '311', 'j080', '271626', 'Cycle Slip Frequency'], ['TF01', '311', 'j524', '217289', 'Cycle Slip Frequency'], ['TF02', '311', '2EAP', '178616', 'Cycle Slip Frequency'], ['TF02', '311', '3EAP', '218762', 'Cycle Slip Frequency'], ['TF02', '311', 'j078', '269259', 'Cycle Slip Frequency'], ['TF02', '311', 'j080', '195869', 'Cycle Slip Frequency'], ['TF02', '311', 'j524', '239231', 'Cycle Slip Frequency'], ['TF03', '031', '2EAP', '828854', 'Cycle Slip Frequency'], ['TF03', '031', '3EAP', '690723', 'Cycle Slip Frequency'], ['TF03', '031', 'j078', '942357', 'Cycle Slip Frequency'], ['TF03', '031', 'j080', '942057', 'Cycle Slip Frequency'], ['TF03', '031', 'j524', '942066', 'Cycle Slip Frequency']]

These are the values in recvs:
['j078', 'j080', 'j524', '2EAP', '3EAP']

import numpy as np
import matplotlib.pyplot as plt

fig, ax = plt.subplots()
for recv in recvs:      
    if len([x for x in CSFlistremote if x[2] == recv]) > 0:
        freq = np.array([[str(x[0]),int(x[3])] for x in CSFlistremote if 'Cycle Slip Frequency' in x[4] and recv in x[2]])
        ax = plt.axes()
        ax.plot(freq[:,0],freq[:,1],'o--', linewidth=2, markersize=6, label = recv) 
        plt.title('Remote Receivers Cycle Slip Frequency')
        ax.set_ylabel('Observations/Slip')
        ax.set_xlabel('Flight')
        ax.legend(bbox_to_anchor=(0.79,0.97), loc=2, borderaxespad=0.)
plt.show()

我从中得到的图是5条不同的线,所有线都具有正确的不同接收器颜色,但是它在底部绘制了第一个接收器x,y,然后在下一个接收器中绘制了x,y,正好是第一个接收器如果它具有一个全新的y范围,对于其余的接收器,依此类推。因此,与其全部放在我的y范围图上,不如在一个图上显示5个不同的图。

0 个答案:

没有答案