Czy ktoś ma jakieś doświadczenie z oprogramowaniem (najlepiej darmowym, najlepiej open source), które zrobi zdjęcie danych wykreślonych na współrzędnych kartezjańskich (standardowy, codzienny wykres) i wyodrębni współrzędne punktów wykreślonych na wykresie?
Zasadniczo jest to problem eksploracji danych i problem odwrotnej wizualizacji danych.
data-visualization
data-mining
software
Alex Holcombe
źródło
źródło
Odpowiedzi:
Sprawdź digitalizacją pakiet dla R . Został zaprojektowany w celu rozwiązania dokładnie tego rodzaju problemu.
źródło
oprogramowanie do digitalizacji grafów
Istnieje wiele różnych opcji, ale w zasadzie wszystkie używają tego samego przepływu pracy:
Program zwraca każdy punkt jako macierz xy.
Często pomaga wybrać punkty, jeśli obraz jest powiększony, przesyłając powiększoną wersję obrazu lub używając funkcji powiększania dostępnej w niektórych programach.
Istnieje wiele programów, które różnią się dodatkowymi funkcjami, użytecznością, licencjonowaniem i kosztami. Wymieniłem je poniżej.
Wszystkie te, z których korzystałem, działają dobrze. Z wyjątkiem kontekstów, w których błąd pomiaru jest bardzo mały, błąd zgarniania wykresu jest nieznaczny (np. Błąd digitalizacji << wielkość słupków błędów lub niepewność w oszacowaniu). Jeśli nie przetestowałem dokładności żadnego z tych programów, ale warto byłoby porównać użytkowników, programy i wyniki odtworzonych analiz statystycznych.
Programy, z których korzystałem:
Programy, z których nie korzystałem:
TL; DR: WebPlotDigitizer jest dostępny jako aplikacja internetowa oraz jako wtyczka chrome
źródło
Inni odpowiadający zakładają, że masz do czynienia z obrazem rastrowym wykresu. Ale obecnie dobrą praktyką jest publikowanie wykresów w postaci wektorowej. W takim przypadku możesz osiągnąć znacznie wyższą dokładność odzyskanych danych, a nawet oszacować błąd odzyskiwania, jeśli pracujesz bezpośrednio z kodem wykresu wektorowego, bez konwersji go na obraz rastrowy.
Ponieważ artykuły są publikowane online jako pliki PDF, zakładam, że masz plik PDF, który zawiera wykres wektorowy z danymi, które chcesz odzyskać (uzyskać w formie liczbowej) i oszacować wprowadzony błąd odzyskiwania.
Przede wszystkim PDF to format wektorowy, który jest zasadniczo tekstowy (może być odczytany przez edytor tekstu). Problem polega na tym, że może (i prawie zawsze) zawierać skompresowane strumienie danych, które wymagają dekompresji w celu odczytania ich przez edytor tekstu. Te skompresowane strumienie danych zwykle zawierają potrzebne informacje.
Istnieje kilka sposobów dekompresji strumieni danych w celu konwersji pliku PDF na dokument tekstowy z czytelnym kodem PDF. Prawdopodobnie najprostszym sposobem jest użycie darmowego narzędzia QPDF z
--stream-data=uncompress
opcją :Niektóre inne sposoby opisano tutaj i tutaj .
Wygenerowany plik outfile.pdf można otworzyć za pomocą edytora tekstu. Teraz potrzebujesz PDF Reference Manual 1.7, aby zrozumieć, co widzisz. Nie panikuj w tej chwili! Musisz znać tylko kilku operatorów opisanych w „TABELI 4.9 Operatory budowy ścieżki” na stronach 226–227. Najważniejszymi operatorami są (pierwsza kolumna zawiera specyfikację współrzędnych dla operatora, druga zawiera operator, a trzecia to nazwa operatora ):
W większości przypadków wystarczy znać tych czterech operatorów do odzyskiwania danych.
Teraz musisz zaimportować plik outfile.pdf jako tekst do jakiegoś programu, w którym możesz manipulować danymi. Pokażę, jak to zrobić z Mathematica .
Importowanie pliku:
Teraz zakładam najprostszy przypadek: wykres zawiera linię, która składa się z wielu dwupunktowych segmentów. W takim przypadku każdy segment linii jest kodowany w następujący sposób:
Wyodrębnianie wszystkich takich segmentów z kodu PDF:
Wizualizacja ich:
Otrzymujesz coś takiego (praca, z którą pracuję zawiera cztery wykresy):
Każde dwa sąsiednie segmenty mają jeden punkt. W tym przypadku możesz przekształcić sekwencje sąsiednich segmentów w ścieżki:
Teraz możesz wizualizować wszystkie ścieżki osobno:
Na tej figurze możesz wybrać (klikając dwukrotnie) szukaną ścieżkę, skopiować zaznaczenie grafiki i wkleić jako nową
Graphics
. Aby przekonwertować go do tyłu na listę punktów, weź element{1, 1, 1}
. Teraz mamy punkty nie w układzie współrzędnych wykresu, ale w układzie współrzędnych pliku PDF. Musimy ustalić relacje między nimi.Z powyższego wykresu wybierasz ręcznie kleszcze (przytrzymując
Shift
dla wielokrotnego wyboru), a następnie kopiujesz je i wklej jako noweGraphics
. Oto, w jaki sposób można wyodrębnić współrzędne poziomych kleszczy:Teraz sprawdź różnice między kleszczami:
Na podstawie tych różnic można zobaczyć, jak dokładne jest umieszczanie znaczników w pliku PDF. Daje oszacowanie błędu wprowadzonego przez konwersję oryginalnych punktów danych na wykres wektorowy zawarty w pliku PDF. Jeśli występują znaczące błędy w pozycjonowaniu kleszczy, możesz zmniejszyć błąd, dopasowując współrzędne kleszczy do modelu liniowego. Tej funkcji liniowej można teraz użyć do uzyskania oryginalnych współrzędnych punktów ścieżki (czyli w układzie współrzędnych wykresu).
źródło
Nie korzystałem z niego, ale laboratorium UWA CogSci poleca DataThief (shareware).
źródło
Sprawdź narzędzie. Jest darmowy i open source http://digitizer.sourceforge.net/
źródło
Un-Scan-It http://www.silkscientific.com/graph-digitizer.htm
źródło
Spróbuj scanit: http://amsterchem.com/scanit.html
Jest bezpłatny, działa w systemie Windows
źródło
Możesz także spróbować im2graph ( http://www.im2graph.co.il ), aby przekonwertować wykresy na dane. Działa w systemie Linux i Windows.
źródło
„g3data” to oprogramowanie, które może służyć do realizacji Twoich celów. To darmowe oprogramowanie, z którego korzystałem. Możesz go pobrać tutaj: http://www.frantz.fi/software/g3data.php
źródło
Musiałem to robić tyle razy w swojej karierze, że ostatecznie opracowałem program javascript, który jest dostępny tutaj:
http://kdusling.github.io/projects/DataGrab/index.html
Przepraszamy, ale nadal będziesz musiał kliknąć każdy punkt. Możesz jednak użyć klawiszy strzałek, co pozwala zaoszczędzić trochę nadgarstka.
źródło
STIPlotDigitizer został niedawno wydany.
http://stiwww.com/product/software-techniques-plot-digitizer
źródło
Dla
R
użytkowników pakietgrImport
(w CRAN ) może importować grafikę wektorową i konwertować je na obiekty, które R może interpretować. Zakłada się, że można konwertować PDF (lub inny interesujący format wektorowy) na format PostScript. Można to zrobić na przykład za pomocą Inkscape : import (File > Import
) strony PDF z rysunkiem do Inkspace iFile > Save As > Save as type: > PostScript *.ps
. Gdy*.ps
plik pojawi się wgrImport
winiecie Importowanie grafiki wektorowej , bardziej odpowiedni jest rozdział „4.1. Skrobanie danych z obrazów ”.Będziesz potrzebował ghostscript na swoim systemie operacyjnym - spróbuj go pobrać stąd .
Uwaga, jeśli uruchomić jakoś w błąd ghostscript „status 127” podczas rozmowy
grImport::PostScriptTrace
, a następnie daniele zalecenie od tutaj , które mówi, aby ręcznie ustawić ścieżkę do Ghostscript na komputerze.Oto przykładowy kod R do importowania pliku PostScript do R:
Uwaga: jeśli wykres znajduje się na stronie w wielostronicowym pliku PDF, możesz podzielić dokument wielostronicowy za pomocą
PDFTK builder
. Zaimportuj jednostronicowy plik PDF w Ikscape i usuń wszelkie dodatkowe elementy (dodatkowy tekst, dodatkowe elementy wykresu). Ułatwi to pracę w R, gdy będziesz próbował złapać współrzędne interesujących cię elementów wykresu.źródło