У кого-нибудь есть опыт работы с программным обеспечением (желательно бесплатным, предпочтительно с открытым исходным кодом), которое будет снимать данные, нанесенные на декартовы координаты (стандартный, повседневный график), и извлекать координаты точек, нанесенных на график?
По сути, это проблема интеллектуального анализа данных и обратная визуализация данных.
data-visualization
data-mining
software
Алекс Холкомб
источник
источник
Ответы:
Проверьте оцифровать пакет для R . Он предназначен для решения именно такой проблемы.
источник
программное обеспечение для оцифровки графиков
Есть много разных вариантов, но все они в основном используют один и тот же рабочий процесс:
Программа возвращает каждую точку в виде матрицы xy.
Часто это помогает выбрать точки, если изображение увеличено, загружая увеличенную версию изображения или используя функцию масштабирования, доступную в некоторых программах.
Существует много программ, и они различаются по дополнительным функциям, удобству использования, лицензированию и стоимости. Я перечислил их ниже.
Все те, которые я использовал, работают нормально. За исключением случаев, когда погрешность измерения очень мала, погрешность соскребания графика незначительна (например, погрешность оцифровки << размер погрешностей или неопределенность в оценке). Если бы не проверяли точность какой-либо из этих программ, было бы интересно сравнить ее среди пользователей, среди программ и с результатами воспроизведенного статистического анализа.
Программы, которые я использовал:
Программы, которые я не использовал:
TL; DR: WebPlotDigitizer доступен как веб-приложение, а также как подключаемый модуль Chrome.
источник
Другие ответчики предполагают, что вы имеете дело с растровым изображением графика. Но в настоящее время хорошей практикой является публикация графиков в векторном виде. В этом случае вы можете добиться гораздо более высокой точности восстановленных данных и даже оценить ошибку восстановления, если работаете с кодом векторного графа напрямую, не преобразовывая его в растровое изображение.
Поскольку документы публикуются в Интернете в виде файлов PDF, я предполагаю, что у вас есть файл PDF, который содержит векторный график с данными, которые вы хотите восстановить из него (получите в числовой форме), и оцените внесенную ошибку восстановления.
Прежде всего, PDF - векторный формат, который в основном текстовый (может быть прочитан текстовым редактором). Проблема заключается в том, что он может (и почти всегда) содержать сжатые потоки данных, которые необходимо распаковать, чтобы прочитать их в текстовом редакторе. Эти сжатые потоки данных обычно содержат необходимую нам информацию.
Существует несколько способов распаковать потоки данных, чтобы преобразовать файл PDF в текстовый документ с читаемым кодом PDF. Вероятно, самый простой способ - использовать бесплатную утилиту QPDF с
--stream-data=uncompress
опцией :Некоторые другие способы описаны здесь и здесь .
Сгенерированный файл outfile.pdf может быть открыт текстовым редактором. Теперь вам нужно PDF Reference Manual 1.7, чтобы понять, что вы видите. Не паникуйте в этот момент! Вам нужно знать только несколько операторов, описанных в «ТАБЛИЦЕ 4.9 Операторы построения пути» на страницах 226 - 227. Наиболее важными являются операторы (первый столбец содержит спецификацию координат для оператора, второй - оператор, а третий - имя оператора ):
В большинстве случаев достаточно знать эти четыре оператора для восстановления данных.
Теперь вам нужно импортировать файл outfile.pdf в виде текста в некоторую программу, где вы можете манипулировать данными. Я покажу, как это сделать с Mathematica .
Импорт файла:
Теперь я предполагаю самый простой случай: граф содержит линию, состоящую из множества двухточечных отрезков. В этом случае каждый сегмент линии кодируется так:
Извлечение всех таких сегментов из кода PDF:
Визуализация их:
Вы получите что-то вроде этого (статья, с которой я работаю, содержит четыре графика):
Каждые два соседних сегмента имеют одну точку. Так что в этом случае вы можете превратить последовательности соседних сегментов в пути:
Теперь вы можете визуализировать все пути отдельно:
На этом рисунке вы можете выбрать (двойным щелчком) путь, который вы ищете, скопировать графику и вставить как новый
Graphics
. Для преобразования его обратно в список точек вы берете элемент{1, 1, 1}
. Теперь у нас есть точки не в системе координат графика, а в системе координат PDF-файла. Нам нужно установить отношения между ними.На приведенном выше графике вы выбираете галочки вручную (удерживая
Shift
для многократного выбора), затем копируете их и вставляете как новыеGraphics
. Вот как вы можете извлечь координаты горизонтальных отметок:Теперь проверьте разницу между галочками:
Из этих различий вы можете видеть, насколько точно позиционирование галочек в файле PDF. Это дает оценку ошибки, вносимой путем преобразования исходных точек данных в векторный граф, включенный в файл PDF. Если есть заметные ошибки в позиционировании тиков, вы можете уменьшить их, подгоняя координаты тиков к линейной модели. Эта линейная функция теперь может использоваться для получения исходных координат точек пути (то есть в системе координат графика).
источник
Я не использовал его, но лаборатория UWA CogSci рекомендует DataThief (условно-бесплатное программное обеспечение).
источник
Проверьте engauge. Это бесплатный и открытый исходный код http://digitizer.sourceforge.net/
источник
Un-Scan-It http://www.silkscientific.com/graph-digitizer.htm
источник
Попробуйте Scanit: http://amsterchem.com/scanit.html
Это бесплатно, работает на Windows
источник
Вы также можете попробовать im2graph ( http://www.im2graph.co.il ) конвертировать графики в данные. Работает в Linux и Windows.
источник
«g3data» - это программное обеспечение, которое может использоваться для ваших целей. Это бесплатное программное обеспечение, и я использовал его. Вы можете скачать его здесь: http://www.frantz.fi/software/g3data.php
источник
Мне приходилось делать это так много раз за свою карьеру, что в итоге я создал программу javascript, которая доступна здесь:
http://kdusling.github.io/projects/DataGrab/index.html
Извините, но вам все равно нужно будет нажимать на каждую точку. Хотя вы можете использовать клавиши со стрелками, которые сохраняют некоторое напряжение запястья.
источник
STIPlotDigitizer был недавно выпущен.
http://stiwww.com/product/software-techniques-plot-digitizer
источник
Для
R
пользователей пакетgrImport
(в CRAN ) может импортировать векторную графику и преобразовывать ее в объекты, которые R может интерпретировать. Предполагается, что можно конвертировать PDF (или другой интересующий векторный формат) в формат PostScript. Это можно сделать, например, с помощью Inkscape : import (File > Import
) вашей страницы PDF с вашей фигурой в Inkspace иFile > Save As > Save as type: > PostScript *.ps
. После того, как у вас есть*.ps
файл, используйтеgrImport
виньетку « Импорт векторной графики» , более актуальным является раздел «4.1. Соскоб данных с изображений ».Вам понадобится ghostscript в вашей операционной системе - попробуйте скачать его отсюда .
Обратите внимание, если вы бежите как - то в Ghostscript ошибка «статус 127» при вызове
grImport::PostScriptTrace
, то паром рекомендации от здесь , который говорит вручную прописать путь к Ghostscript на вашей машине.Вот пример кода R для импорта файла PostScript в R:
Обратите внимание: если ваш график находится на странице в многостраничном PDF-файле, вы можете разделить многостраничный документ с помощью
PDFTK builder
. Импортируйте одностраничный PDF-файл в Ikscape и удалите все дополнительные элементы (дополнительный текст, дополнительные элементы графика). Это облегчит вашу работу в R при попытке поймать координаты интересующих вас элементов графика.источник