2017-01-12 8 views
0

Я пытаюсь нарисовать 3 набора данных одного и того же типа на одном графике с тремя разными строками. Все наборы данных имеют один и тот же тип x, «время» и «тип», «измерение». Однако длины каждого набора данных различаются для обоих типов x и y в каждом наборе данных. Как мне приступить к созданию трехстрочного линейного графика с использованием matplotlib?Многолинейный линейный граф matplotlib

Каждый набор данных извлекается из файла csv и заканчивается в виде списка. Это касается как x, так и y компонентов каждого набора данных. Вот как я собираю свои данные:

# Data Set 1 
with open('File1.csv', 'r') as f: 
    data_1 = list(reader(f)) 

measurement_1 = [i[3] for i in data_1[1::]] 
time_1 = [parser.parse(i[0]) for i in data_1[1::]] 

measurement_1, time_1 = zip(*[(i, j) for i, j in zip(measurement_1, time_1) if i !='']) 

measurement_1 = list(measurement_1) 
time_1 = list(time_1) 

# Data Set 2 
with open('File2.csv', 'r') as f: 
    data_2 = list(reader(f)) 

measurement_2 = [i[3] for i in data_2[1::]] 
time_2 = [parser.parse(i[0]) for i in data_2[1::]] 

measurement_2, time_2 = zip(*[(i, j) for i, j in zip(measurement_2, time_2) if i !='']) 

measurement_2 = list(measurement_2) 
time_2 = list(time_2) 

# Data Set 3 
with open('File3.csv', 'r') as f: 
    data_3 = list(reader(f)) 

measurement_3 = [i[3] for i in data_3[1::]] 
time_3 = [parser.parse(i[0]) for i in data_3[1::]] 

measurement_3, time_3 = zip(*[(i, j) for i, j in zip(measurement_3, time_3) if i !='']) 

measurement_3 = list(measurement_3) 
time_3 = list(time_3) 
+0

Участок х каждого набора данных и у значения: '' 'plt.plot (x1, y1, x2, y2, x3, y3)' ''. – wwii

+0

@wwii спасибо, не подумал, что это было бы так же тривиально, как и то, что наборы данных имели разную массу. но он работает отлично. Спасибо! :) –

+0

http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.plot – wwii

ответ

0

Поскольку вы не предоставили ссылочные рамки данных, вот широкая структура.

ax = df.plot() 
df2.plot(ax = ax) 
df3.plot(ax = ax) 

plt.show()