Hat jemand Erfahrung mit Software (am besten kostenlos, am besten Open Source), die ein Bild von Daten aufnimmt, die auf kartesischen Koordinaten aufgezeichnet sind (ein normaler, alltäglicher Plot), und die Koordinaten der Punkte extrahiert, die in der Grafik aufgezeichnet sind?
Dies ist im Wesentlichen ein Data-Mining-Problem und ein umgekehrtes Datenvisualisierungsproblem.
data-visualization
data-mining
software
Alex Holcombe
quelle
quelle
Antworten:
Schauen Sie sich das Digitalisierungspaket für R an . Es wurde entwickelt, um genau diese Art von Problem zu lösen.
quelle
Graph Digitalisierungssoftware
Es gibt viele verschiedene Optionen, aber alle verwenden grundsätzlich den gleichen Workflow:
Das Programm gibt jeden Punkt als xy-Matrix zurück.
Oft hilft es, Punkte auszuwählen, wenn das Bild gezoomt wird, indem entweder eine gezoomte Version des Bildes hochgeladen oder die Zoomfunktion verwendet wird, die in einigen Programmen verfügbar ist.
Es gibt viele Programme, die sich durch zusätzliche Funktionen, Benutzerfreundlichkeit, Lizenzierung und Kosten unterscheiden. Ich habe sie unten aufgeführt.
Alle, die ich benutzt habe, funktionieren einwandfrei. Außer in Kontexten, in denen der Messfehler sehr klein ist, ist der Fehler durch das Schaben des Graphen unbedeutend (z. B. Fehler durch Digitalisierung << Größe der Fehlerbalken oder Unsicherheit in der Schätzung). Wenn Sie die Genauigkeit eines dieser Programme nicht getestet haben, wäre ein Vergleich zwischen Benutzern, Programmen und den Ergebnissen reproduzierter statistischer Analysen interessant.
Programme, die ich benutzt habe:
Programme, die ich nicht benutzt habe:
TL; DR: WebPlotDigitizer ist als Webanwendung sowie als Chrome-Plugin verfügbar
quelle
Andere Antwortende gehen davon aus, dass Sie sich mit dem Rasterbild eines Diagramms befassen. Heutzutage ist es jedoch empfehlenswert, Diagramme in Vektorform zu veröffentlichen. In diesem Fall können Sie eine viel höhere Genauigkeit der wiederhergestellten Daten erzielen und sogar den Wiederherstellungsfehler abschätzen, wenn Sie direkt mit dem Code des Vektordiagramms arbeiten, ohne ihn in ein Rasterbild umzuwandeln.
Da die Artikel online als PDF-Dateien veröffentlicht werden, gehe ich davon aus, dass Sie über eine PDF-Datei verfügen, die ein Vektordiagramm mit Daten enthält, die Sie wiederherstellen möchten (in numerischer Form), und den eingeführten Wiederherstellungsfehler zu schätzen.
Zunächst einmal ist PDF ein Vektorformat, das im Grunde genommen aus Text besteht (das von einem Texteditor gelesen werden kann). Das Problem ist, dass es (und fast immer) komprimierte Datenströme enthalten kann, die dekomprimiert werden müssen, um von einem Texteditor gelesen zu werden. Diese komprimierten Datenströme enthalten normalerweise die Informationen, die wir benötigen.
Es gibt verschiedene Möglichkeiten, Datenströme zu dekomprimieren, um PDF-Dateien in Textdokumente mit lesbarem PDF-Code zu konvertieren. Der wahrscheinlich einfachste Weg ist die Verwendung des kostenlosen QPDF-Dienstprogramms mit der
--stream-data=uncompress
Option :Einige andere Möglichkeiten werden hier und hier beschrieben .
Die erzeugte Datei outfile.pdf kann mit einem Texteditor geöffnet werden. Jetzt benötigen Sie PDF Reference Manual 1.7, um zu verstehen, was Sie sehen. In diesem Moment keine Panik! Sie müssen nur wenige Operatoren kennen, die in "TABELLE 4.9 Pfadkonstruktionsoperatoren" auf den Seiten 226 - 227 beschrieben sind. Die wichtigsten Operatoren sind (die erste Spalte enthält die Koordinatenspezifikation für einen Operator, die zweite enthält den Operator und die dritte den Operatornamen) ):
In den meisten Fällen reicht es aus, diese vier Operatoren zu kennen, um die Daten wiederherzustellen.
Jetzt müssen Sie die Datei outfile.pdf als Text in ein Programm importieren, in dem Sie die Daten bearbeiten können. Ich werde zeigen, wie es mit Mathematica geht .
Datei importieren:
Nun nehme ich den einfachsten Fall an: Der Graph enthält eine Linie, die aus vielen Zweipunktsegmenten besteht. In diesem Fall wird jedes Segment der Zeile folgendermaßen codiert:
Alle diese Segmente aus dem PDF-Code extrahieren:
Visualisierung:
Sie erhalten so etwas (das Papier, mit dem ich arbeite, enthält vier Grafiken):
Jeweils zwei benachbarte Segmente teilen sich einen Punkt. In diesem Fall können Sie also die Sequenzen benachbarter Segmente in Pfade umwandeln:
Jetzt können Sie alle Pfade separat visualisieren:
In dieser Abbildung können Sie den gewünschten Pfad auswählen (durch Doppelklicken), die Grafikauswahl kopieren und als neue Grafik einfügen
Graphics
. Um es rückwärts in eine Liste von Punkten umzuwandeln, nehmen Sie das Element{1, 1, 1}
. Jetzt haben wir die Punkte nicht im Koordinatensystem der Grafik, sondern im Koordinatensystem der PDF-Datei. Wir müssen eine Beziehung zwischen ihnen herstellen.Aus dem obigen Diagramm wählen Sie die Häkchen mit der Hand aus (halten Sie die Maustaste
Shift
für die Mehrfachauswahl gedrückt), kopieren sie dann und fügen sie als neu einGraphics
. So können Sie Koordinaten horizontaler Hilfsstriche extrahieren:Überprüfen Sie nun die Unterschiede zwischen den Ticks:
An diesen Unterschieden können Sie erkennen, wie genau die Ticks in der PDF-Datei positioniert sind. Es gibt eine Schätzung des Fehlers, der durch Konvertieren der ursprünglichen Datenpunkte in ein in der PDF-Datei enthaltenes Vektordiagramm eingeführt wird. Wenn es merkliche Fehler bei der Positionierung von Ticks gibt, können Sie den Fehler reduzieren, indem Sie die Koordinaten von Ticks an ein lineares Modell anpassen. Diese lineare Funktion kann jetzt verwendet werden, um die ursprünglichen Koordinaten von Punkten des Pfades (dh im Koordinatensystem des Diagramms) abzurufen.
quelle
Ich habe es nicht benutzt, aber UWA CogSci Lab empfiehlt DataThief (Shareware).
quelle
Überprüfen Sie die Anzeige. Es ist kostenlos und Open Source http://digitizer.sourceforge.net/
quelle
Un-Scan-It http://www.silkscientific.com/graph-digitizer.htm
quelle
Versuchen Sie scanit: http://amsterchem.com/scanit.html
Es ist kostenlos und läuft unter Windows
quelle
Sie können auch im2graph ( http://www.im2graph.co.il ) versuchen , Diagramme in Daten zu konvertieren. Funktioniert unter Linux und Windows.
quelle
'g3data' ist eine Software, mit der Sie Ihren Zweck erfüllen können. Es ist eine freie Software und ich habe sie benutzt. Sie können es hier herunterladen: http://www.frantz.fi/software/g3data.php
quelle
Ich musste dies so oft in meiner Karriere tun, dass ich schließlich ein Javascript-Programm zusammenstellte, das hier verfügbar ist:
http://kdusling.github.io/projects/DataGrab/index.html
Entschuldigung, aber Sie müssen immer noch auf jeden einzelnen Punkt klicken. Sie können jedoch die Pfeiltasten verwenden, um das Handgelenk zu schonen.
quelle
STIPlotDigitizer wurde neu veröffentlicht.
http://stiwww.com/product/software-techniques-plot-digitizer
quelle
Für
R
Benutzer kann das PaketgrImport
(auf CRAN ) Vektorgrafiken importieren und in Objekte konvertieren, die R interpretieren kann. Es wird davon ausgegangen, dass PDF (oder ein anderes interessierendes Vektorformat) in das PostScript-Format konvertiert werden kann. Dies kann zum Beispiel mit Inkscape geschehen : importiere (File > Import
) deine PDF-Seite mit deiner Figur in Inkspace undFile > Save As > Save as type: > PostScript *.ps
. Sobald Sie Ihre*.ps
Datei in dergrImport
Vignette Importieren von Vektorgrafiken gespeichert haben, lesen Sie den Abschnitt '4.1. Daten aus Bildern entfernen '.Sie benötigen Ghostscript auf Ihrem Betriebssystem - versuchen Sie es hier herunterzuladen .
Beachten Sie , wenn Sie irgendwie in ghost Fehler ‚-Status 127‘ laufen , wenn Sie anrufen
grImport::PostScriptTrace
, dann Brach die Empfehlung von hier , die den Pfad manuell eingestellt sagt auf Ihrem Rechner ghostscript.Hier ist ein Beispiel für R-Code zum Importieren einer PostScript-Datei in R:
Hinweis: Befindet sich Ihr Diagramm auf einer Seite in einer mehrseitigen PDF-Datei, können Sie das mehrseitige Dokument mit teilen
PDFTK builder
. Importieren Sie Ihre einseitige PDF-Datei in Ikscape und löschen Sie alle zusätzlichen Elemente (zusätzlicher Text, zusätzliche Diagrammelemente). Dies erleichtert Ihnen die Arbeit in R, wenn Sie versuchen, die Koordinaten der Diagrammelemente zu ermitteln, an denen Sie interessiert sind.quelle