Возьмите список координат и нанесите их на график

Прямо сейчас у меня есть список координат в следующем формате:

(1,12),(2,3),(3,9)....

Все координаты указаны в квадратных скобках, как указано выше, и формат для остальной части строки точно такой же (список в строковом формате). Значения координат x увеличиваются на единицу по всей строке (и могут продолжаться даже до 100000. Значения y случайны и могут варьироваться от 1 до 2048 или даже выше. Я хочу найти способ взять эту строку (который представляет собой список координат в указанном выше формате) и превратить его в изображение или виртуальный график с нанесенной на него каждой точкой. В настоящее время я использую Python 2.7 в визуальной студии, но я открыт для использования других программ, поскольку строка сам хранится в файле .txt в указанном выше формате.

Как только это будет сделано, я хотел бы иметь возможность взять этот график и, используя только его в качестве базовой точки, иметь возможность снова регенерировать всю строку.


person Shivansh Vij    schedule 20.08.2015    source источник


Ответы (1)


Вы можете использовать matplotlib для построения и ast.literal_eval для оценки вашей строки:

import matplotlib.pylab as plt
from ast import literal_eval
from operator import itemgetter

with open("your_file") as f:
    lst = literal_eval(f.read())
    x,y = map(itemgetter(0),lst), map(itemgetter(1),lst)
    plt.plot(x,y)
    plt.show()
person Padraic Cunningham    schedule 20.08.2015
comment
Красиво, этот код идеально подходит для того, что я пытаюсь сделать. Однако мой вопрос в том, как я могу вернуть этот код обратно в свой список координат? - person Shivansh Vij; 21.08.2015
comment
@ShivanshVij, lst = literal_eval(f.read()) содержит ваш список кортежей - person Padraic Cunningham; 21.08.2015
comment
Нет, я имею в виду использование только команды plt.show() (потому что, когда эта команда выполняется, она позволяет мне сохранять график в виде файлов разных типов, включая png, а также другие типы). Мне нужно иметь возможность использовать только этот сохраненный файл (либо png, либо нет) и вернуть его обратно в список кортежей. - person Shivansh Vij; 21.08.2015
comment
превратить png в список координат? - person Padraic Cunningham; 21.08.2015
comment
Не обязательно png. У меня есть возможность сохранить его как .png, .eps, .pdf, .pgf, .ps, .raw, .rgba, .svg, .svgz. Я думал, .ps (постскриптум), потому что на самом деле это уже текст, и использование этого будет работать. Я просто не знаю как. Помогло бы, если бы я загрузил сохраняемые форматы? - person Shivansh Vij; 21.08.2015
comment
Я хочу иметь возможность сохранить список (который довольно длинный) в изображение графика. Затем я хочу иметь возможность позже взять это изображение и, используя только его, снова получить список. Конечно, это не обязательно должно быть изображение, другие форматы меня тоже вполне устраивают. Большое спасибо за вашу помощь. - person Shivansh Vij; 21.08.2015
comment
У тебя есть идеи? - person Shivansh Vij; 21.08.2015
comment
@ShivanshVij, я могу легко получить координаты точек, мне просто нужно понять остальное, здесь уже поздно, поэтому я сделаю еще один взлом после некоторого сна и отредактирую ответ сегодня позже. - person Padraic Cunningham; 21.08.2015
comment
@ShivanshVij, stackoverflow.com/questions/13306519 / - person Padraic Cunningham; 21.08.2015
comment
Хорошо, я посмотрел ссылку, которую вы оставили, и я не понимаю. График, созданный с помощью вашего кода, представляет собой не точечную диаграмму, а гистограмму. Так как же может помочь этот огромный код (DataCursor)? В любом случае, я чувствую, что есть более простой метод для всего этого. Любые другие идеи? И спасибо за вашу помощь. - person Shivansh Vij; 21.08.2015
comment
У кого-нибудь есть идеи? - person Shivansh Vij; 21.08.2015