2011-10-13

Datenimport mal anders

Wer kennt es nicht. Man liest ein Paper und denkt sich: Diese Daten hätte ich jetzt auch gern. Sei es um die Ergebnisse noch einmal selber nachzurechnen oder andere Methoden mit der vorgestellten zu vergleichen.

[Einschub: Ok, es gibt wahrscheinlich den einen oder anderen, der diese Gefühl nicht kennt. Aber ganz abwegig ist es auch nicht :-)]

Glücklich, wer eine passende Grafik in dem Paper findet und das R-Paket digitize kennt.

Nehmen wir uns mal die folgende Grafik vor. Fehlen uns dazu die numerischen Werte (also die Koordinaten der einzelnen Punkte), so könnte man sich nun mit Lineal und Bleistift vor eine ausgedruckte Version setzen und die Werte der Punkte abmessen. Aber digitize macht es etwas bequemer.

Wir laden also das Paket digitize und müssen anschließend die Grafik in R importieren.

install.packages("digitize")
library(digitize)
axis = ReadAndCal("daten.jpg")


Es öffnet sich gleich die importierte JPG-Datei. Zuerst müssen wir nun 4 Referenzpunkte setzen. Jeweils 2 auf der X-Achse und 2 auf der Y-Achse. Das geschieht durch einen Linksklick in der Grafik.

Im nächsten Schritt müssen die einzelnen Datenpunkte in der Grafik markiert werden. Das geschieht wieder mit einem Linksklick in die Grafik.

points = DigitData(col="red")

Wer das ausprobiert, weiß spätestens jetzt warum sich das Paket nur für überschaubare Datensätze eignet. Manchmal dauert es etwas länger, aber wenn alle Punkte rot markiert sind beenden wir den Schritt indem man ESC drückt.
Zuletzt werden die gesammelten Achsen-Informationen benutzt um die Koordinaten der Punkte hochzurechnen. Dazu muss angeben werden an welchen Stellen die Punkte auf der X- bzw. Y-Achse gesetzt wurden (hier jeweils 0 und 2).

data = Calibrate(points, axis, 0, 2, 0, 2)

Es ergeben sich die Folgenden gerundeten Werte:

XY
1-2,5-2,6
21,21,3
300,3
40,80,4
522,2
60,10,3
7-0,3-0,3
82,32,8
9??
102,02,1


Abgesehen von minimalen Abweichungen stimmen diese Daten mit denen die ich tatsächlich benutzt habe um die Grafik zu erzeugen überein. Allein Punkt 9, der von den Koordinaten identisch zu Punkt 3 ist kann mit der Methode natürlich nicht gefunden werden. 2 direkt übereinanderliegende Punkte können in der Grafik schließlich nicht auseinandergehalten werden.

Literatur:
  • Timothée Poisot: The digitize Package: Extracting Numerical Data from Scatterplots - R Journal Vol 3/1 (June 2011). http://journal.r-project.org/archive/2011-1/RJournal_2011-1_Poisot.pdf (Stand:  10. Oktober 2011).


Keine Kommentare:

Kommentar veröffentlichen