Построение двух массивов разных размеров с помощью matplotlib - PullRequest
0 голосов
/ 02 апреля 2020

Я хочу использовать matplotlib для отображения моих данных. Я хочу, чтобы 4 разных значения y были нанесены на один и тот же график, чтобы я мог сравнить 4. В настоящее время мои данные 'x' представляют собой массив размером 10:

x: [1,2,3,4,5,6,7,8]

и мои данные y с 3 значения:

y: [[0.6, 0.3, 0.4], [0.2, 0.5, 0.4], [0.6, 0.3, 0.4], .... etc.]

каждый вложенный массив соответствует этому значению x. Таким образом, для x = 1 различные значения y равны 0,6, 0,3, 0,4.

Как я могу построить все это вместе на одном графике?

Спасибо.

Ответы [ 3 ]

0 голосов
/ 02 апреля 2020

Используйте функцию zip для транспонирования списка y, извлекая массивы размером, эквивалентным x. Например,

y1,y2,y3=list(zip(*y))

Затем постройте каждый из y1, y2 и y3.

0 голосов
/ 02 апреля 2020

Вы можете просто сделать для l oop:

for col in np.array(y).T:
    plt.plot(x, col)

Выполнить на примере данных:

x = [1,2,3,4,5,6,7,8]
y = [[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10, 11],
     [12, 13, 14], [15, 16, 17], [18, 19, 20], [21, 22, 23]
    ]

Выход:

enter image description here

0 голосов
/ 02 апреля 2020

Вы можете преобразовать свой список списков (y) в более подходящий формат перед построением графика и использовать a для l oop для построения на том же графике.

Попробуйте этот пример (is basi c):

def plotting(y):
    new_y = [ [sublist[i] for sublist in y] for i in range(len(y[0])) ]

    fig, axes = plt.subplots(1,1)
    for sublist in new_y:
        x = np.arange(0, len(sublist))
        axes.plot(x, sublist)

    return fig, axes

Обратите внимание, что 1-я строка в методе создает новый список y.

# use
fig, ax = plotting(y)
...