Рисовать точки с помощью 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]) Предложения? Ответ 1 Вы можете сделать что-то вроде этого: 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='') Используемый трюк распаковка списков аргументов. Ответ 2 Если вы используете массив numpy, вы можете извлечь его по оси: a = array([[1,2],[3,3],[4,4],[5,2]]) plot(a[:,0], a[:,1], 'ro') Для списков или списков вам понадобится помощник, например: a = [[1,2],[3,3],[4,4],[5,2]] plot(*sum(a, []), marker='o', color='r') Ответ 3 список понятий Я очень рекомендую либеральное применение переписных списков. Они не только кратки и мощны, они, как правило, делают ваш код очень удобочитаемым. Попробуйте что-то вроде этого: list_of_lists = [[1,2],[3,3],[4,4],[5,2]] x_list = [x for [x, y] in list_of_lists] y_list = [y for [x, y] in list_of_lists] plt.plot(x_list, y_list) Следует избегать распаковки аргументов. Это некрасиво. Ответ 4 Напишите вспомогательную функцию. Вот длинная версия, но я уверен, что есть трюк, чтобы сжать ее. >>> 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 Вы можете сделать что-то вроде этого: 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='') Используемый трюк распаковка списков аргументов.
Ответ 2 Если вы используете массив numpy, вы можете извлечь его по оси: a = array([[1,2],[3,3],[4,4],[5,2]]) plot(a[:,0], a[:,1], 'ro') Для списков или списков вам понадобится помощник, например: a = [[1,2],[3,3],[4,4],[5,2]] plot(*sum(a, []), marker='o', color='r')
Ответ 3 список понятий Я очень рекомендую либеральное применение переписных списков. Они не только кратки и мощны, они, как правило, делают ваш код очень удобочитаемым. Попробуйте что-то вроде этого: list_of_lists = [[1,2],[3,3],[4,4],[5,2]] x_list = [x for [x, y] in list_of_lists] y_list = [y for [x, y] in list_of_lists] plt.plot(x_list, y_list) Следует избегать распаковки аргументов. Это некрасиво.
Ответ 4 Напишите вспомогательную функцию. Вот длинная версия, но я уверен, что есть трюк, чтобы сжать ее. >>> 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') В качестве альтернативы вы можете добавить функцию к уже созданному объекту.