потяните точки с помощью matplotlib.pyplot [[x1, y1], [x2, y2]]

Я хочу потянуть график с помощью списка (x,y) пары вместо того, чтобы использовать два списка, один из X и один из Y. Что-то вроде этого:

a = [[1,2],[3,3],[4,4],[5,2]]
plt.plot(a, 'ro')

Вместо:

plt.plot([1,3,4,5], [2,3,4,2])

Предложения?

38
задан Jason Sundram 6 March 2012 в 18:32
поделиться

2 ответа

Напишите вспомогательную функцию.

Вот длинная версия, но я уверен, что есть способ ее сжать.

>>> def helper(lst):
    lst1, lst2 = [], []
    for el in lst:
        lst1.append(el[0])
        lst2.append(el[1])
    return lst1, lst2

>>> 
>>> helper([[1,2],[3,4],[5,6]])
([1, 3, 5], [2, 4, 6])
>>> 

Также добавьте этот помощник:

def myplot(func, lst, flag):
    return func(helper(lst), flag)

И назовите его так:

myplot(plt.plot, [[1,2],[3,4],[5,6]], 'ro')

В качестве альтернативы вы можете добавить функцию к уже экземпляр объекта.

1
ответ дан 27 November 2019 в 03:28
поделиться

Вы можете сделать что-то вроде этого:

a=[[1,2],[3,3],[4,4],[5,2]]
plt.plot(*zip(*a))

К сожалению, вы больше не можете передавать 'ro'. Вы должны передать значения маркера и стиля линии как параметры ключевого слова:

a=[[1,2],[3,3],[4,4],[5,2]]
plt.plot(*zip(*a), marker='o', color='r', ls='')

Я использовал трюк распаковка списков аргументов .

58
ответ дан 27 November 2019 в 03:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: