2017-10-27 10 views
-2

Ich versuche das Erstellen eines Diagramms mit dem folgenden Datenrahmen. Es verfügt über 10 Beobachtungen und 25 Variablen (einer von ihnen - ID - ist nur eine ID-Spalte für die verschiedenen BeobachtungenPlot Datenrahmen mit ggplot2 - R

'data.frame': 10 obs. of 25 variables: 
$ NDVI_mean : num 0.0607 0.0552 0.5811 0.7676 0.0328 ... 
$ NDVI_sd  : num 0.0881 0.0298 0.1644 0.0937 0.0292 ... 
$ NDVI_mean.1 : num 0.0211 0.0549 0.1375 0.1207 0.024 ... 
$ NDVI_sd.1 : num 0.0111 0.0195 0.0227 0.0701 0.0197 ... 
$ NDVI_mean.2 : num 0.0703 0.0715 0.6832 0.769 0.0418 ... 
$ NDVI_sd.2 : num 0.0938 0.0298 0.1601 0.0674 0.0402 ... 
$ NDVI_mean.3 : num 0.0636 0.0552 0.6829 0.732 0.0292 ... 
$ NDVI_sd.3 : num 0.0912 0.0222 0.1613 0.1102 0.0355 ... 
$ NDVI_mean.4 : num 0.092 0.0781 0.6947 0.5256 0.056 ... 
$ NDVI_sd.4 : num 0.0879 0.0211 0.158 0.0686 0.0328 ... 
$ NDVI_mean.5 : num 0.1047 0.091 0.4251 0.3573 0.0722 ... 
$ NDVI_sd.5 : num 0.0441 0.013 0.0585 0.0368 0.0156 ... 
$ NDVI_mean.6 : num 0.0547 0.0654 0.5912 0.6098 0.0404 ... 
$ NDVI_sd.6 : num 0.0874 0.0195 0.2143 0.0975 0.0287 ... 
$ NDVI_mean.7 : num 0.1047 0.0882 0.6914 0.6532 0.0689 ... 
$ NDVI_sd.7 : num 0.0843 0.0177 0.1553 0.0653 0.0299 ... 
$ NDVI_mean.8 : num 0.0859 0.071 0.6905 0.6866 0.0556 ... 
$ NDVI_sd.8 : num 0.0809 0.018 0.1624 0.0866 0.0311 ... 
$ NDVI_mean.9 : num 0.0949 0.1204 0.1434 0.2849 0.1231 ... 
$ NDVI_sd.9 : num 0.00951 0.00719 0.01228 0.03483 0.01023 ... 
$ NDVI_mean.10: num 0.0854 0.0752 0.6712 0.7326 0.0628 ... 
$ NDVI_sd.10 : num 0.0789 0.0212 0.1471 0.0951 0.0326 ... 
$ NDVI_mean.11: num 0.0942 0.0986 0.6434 0.7741 0.0899 ... 
$ NDVI_sd.11 : num 0.0735 0.0188 0.1299 0.0765 0.0277 ... 
$ ID   : int 1 2 3 4 5 6 7 8 9 10 

Image of the dataframe

Ich mag würde ein Diagramm mit den folgenden Eigenschaften schaffen:

die X-Achsen sollten die verschiedenen NDVI_mean Variablen sein (NDVI_mean - NDVI_mean.1 - NDVI_mean.2 - etc.)

die Y-Achsen sollten die Werte dieser Variablen

+

würde ich das Diagramm wie 10 Zeilen enthalten, die mit ggplot2

Ich bin völlig neu für die 10 Beobachtungen entsprechen. Ich habe verwalten einige Grafiken mit diesem Code zu erstellen, aber es ist nicht das, was ich will

ggplot2(NDVIdf)+geom_lines(aes(x=NDVI_mean, y=ID)) 

bearbeiten

Ausgabe von dput (NDVIdf)

> dput(NDVIdf) 
structure(list(NDVI_mean = c(0.0607135413903215, 0.0551773354119158, 
0.58106114381679, 0.767559372904067, 0.0327779986531678, 0.0178615320775541, 
0.242088217197272, 0.20999285277774, 0.0393074640533382, 0.362654323805063 
), NDVI_sd = c(0.0881409040764672, 0.0297587817960566, 0.164350402694459, 
0.0937447350009958, 0.0291673504162979, 0.0328954778667684, 0.154674728930805, 
0.143054126101431, 0.0394783704067313, 0.0311605700206721), NDVI_mean.1 = c(0.0210982854397687, 
0.0549092171312182, 0.137518549485032, 0.120670383289592, 0.0240424367577284, 
0.0159096452554129, 0.0672761385275565, 0.0341803495552938, -0.00134448575083377, 
0.016580205828644), NDVI_sd.1 = c(0.0110723260269658, 0.01951851232517, 
0.0227065359549684, 0.0700670943356275, 0.0196608837546022, 0.0121199724795787, 
0.0585473350749026, 0.0227914450038557, 0.0135058392129466, 0.0150912377421709 
), NDVI_mean.2 = c(0.0703180934388137, 0.0714783174472453, 0.683213190781725, 
0.769036956136717, 0.0418112830812162, 0.0284743048998433, 0.23348292946483, 
0.235929665998861, 0.0450296798850473, 0.193100322654342), NDVI_sd.2 = c(0.0937618859311873, 
0.0298498793436821, 0.160085159223464, 0.0673810570033997, 0.0402149180186587, 
0.0397066821267195, 0.150683537602667, 0.145471088294412, 0.0437922991992655, 
0.0141486994532874), NDVI_mean.3 = c(0.063601350404069, 0.0551904437586304, 
0.682930851671194, 0.731967082842268, 0.0291583347580934, 0.0193111448443503, 
0.319631300233593, 0.166050320085929, 0.0366014763086276, 0.221872499210234 
), NDVI_sd.3 = c(0.0912293427166813, 0.0222453701937956, 0.161322107465979, 
0.110207844254988, 0.0355049011856384, 0.0349930810428516, 0.226276210965238, 
0.140438890801978, 0.0376830428032925, 0.0220584182188743), NDVI_mean.4 = c(0.0919804842383724, 
0.0781265501499422, 0.694671427954745, 0.525632176936541, 0.055980386796576, 
0.0444207693277835, 0.426953378337129, 0.160783372015251, 0.0609390942283722, 
0.280378773041507), NDVI_sd.4 = c(0.0879414801936151, 0.0210552190044792, 
0.158033594194682, 0.0685669288657517, 0.0327713833848639, 0.0354769286383367, 
0.252469606866754, 0.12982572565032, 0.036836867665617, 0.0411465416161875 
), NDVI_mean.5 = c(0.104738543138272, 0.0909713368375085, 0.42508525657118, 
0.357320549164012, 0.0721572385527876, 0.0663794698314188, 0.23911562990616, 
0.142111328436142, 0.0838823297267412, 0.251654432686439), NDVI_sd.5 = c(0.0441048632295888, 
0.0130326877444498, 0.0585279766430101, 0.0368348303398042, 0.0155510862094617, 
0.0192137216652464, 0.0585475549304422, 0.0736886597614494, 0.0212806524351524, 
0.0259938407933158), NDVI_mean.6 = c(0.054670992223019, 0.065381296775636, 
0.591168574495215, 0.609806323819807, 0.0403625648315437, 0.00811946347995523, 
0.310916693477462, 0.158498269033413, 0.0443372830506701, 0.371097291211943 
), NDVI_sd.6 = c(0.0874297350407085, 0.0195485598323798, 0.214314782421285, 
0.0974716364190341, 0.0286726835375469, 0.0464844141552075, 0.124111018323546, 
0.128024962302557, 0.0389891785245309, 0.0776972260415738), NDVI_mean.7 = c(0.104681150177595, 
0.0882044567680745, 0.691354972003269, 0.65319672247453, 0.0689026139683328, 
0.0564115948034715, 0.345466555679804, 0.189094867024672, 0.0757218905916805, 
0.473698360613464), NDVI_sd.7 = c(0.0842570243914433, 0.0176701260206802, 
0.15529028462675, 0.0653161775993753, 0.0298643217871498, 0.0350802264835342, 
0.179839784256719, 0.123083052319927, 0.0381348337459403, 0.0504351117371588 
), NDVI_mean.8 = c(0.08591308296691, 0.0710169977816541, 0.69050244219096, 
0.686550053201553, 0.05559868259279, 0.0386856009179078, 0.385427380396624, 
0.191494000375466, 0.0582605982908748, 0.634092671211804), NDVI_sd.8 = c(0.0809198942299164, 
0.0179761950231585, 0.162375086927031, 0.0865933396475938, 0.0311069109690036, 
0.0341123644056808, 0.221678551331174, 0.123510636808576, 0.0352156193862569, 
0.037441682380018), NDVI_mean.9 = c(0.0948832729278301, 0.120400127877444, 
0.143375746425582, 0.284877572639076, 0.123096886134381, 0.111171634746743, 
0.223262233590715, 0.120538120679937, 0.0971369124338333, 0.233815280325772 
), NDVI_sd.9 = c(0.00951402820331221, 0.00718755312976778, 0.0122787887859583, 
0.0348298462083254, 0.0102326571562652, 0.00707392292527096, 
0.047660749828529, 0.0127667426992843, 0.00615732059786784, 0.0341929453840942 
), NDVI_mean.10 = c(0.0853653180560701, 0.0751638478379656, 0.671240397847597, 
0.732629951796317, 0.0628200256114987, 0.0389376153602489, 0.261580310922298, 
0.237551383820751, 0.0543488352606212, 0.729810364384283), NDVI_sd.10 = c(0.0788860954632659, 
0.0212295674726634, 0.147125862744127, 0.0951195938807548, 0.0325819971840338, 
0.0313179762667036, 0.149062631594425, 0.123975319460501, 0.0295479331978356, 
0.0347570926406439), NDVI_mean.11 = c(0.0941656718689444, 0.0985743153705462, 
0.643407964040386, 0.774084527469533, 0.0899420980061257, 0.0535166413991826, 
0.303595683796766, 0.245633779631581, 0.0643377575135575, 0.697236179516483 
), NDVI_sd.11 = c(0.0735030069394199, 0.0187835191570716, 0.129850840148202, 
0.0764938134743573, 0.0276954256603995, 0.0260888900038652, 0.122217568202193, 
0.0934074608484564, 0.0272831553843282, 0.026010072370012), ID = 1:10), .Names = c("NDVI_mean", 
"NDVI_sd", "NDVI_mean.1", "NDVI_sd.1", "NDVI_mean.2", "NDVI_sd.2", 
"NDVI_mean.3", "NDVI_sd.3", "NDVI_mean.4", "NDVI_sd.4", "NDVI_mean.5", 
"NDVI_sd.5", "NDVI_mean.6", "NDVI_sd.6", "NDVI_mean.7", "NDVI_sd.7", 
"NDVI_mean.8", "NDVI_sd.8", "NDVI_mean.9", "NDVI_sd.9", "NDVI_mean.10", 
"NDVI_sd.10", "NDVI_mean.11", "NDVI_sd.11", "ID"), row.names = c("1", 
"2", "3", "4", "5", "6", "7", "8", "9", "10"), class = "data.frame") 
+1

Bitte geben Sie uns die Ausgabe von 'dput (df)', damit wir Ihre Daten plotten können. Ersetzen Sie 'df' durch den Namen Ihres Datenrahmens. – tyluRp

+0

Ich habe die Frage mit der Information aktualisiert – GCGM

Antwort

1

Ihre Daten sind im Wide-Format, aber ggplot erfordert, dass Sie es zuerst in ein langes Format konvertieren. Das heißt, Sie sollten eine Zeile pro Beobachtung pro Messung haben. In Ihrem Fall sollten Sie einen Datenrahmen mit 12 * 2 * 10 Zeilen haben, und drei Spalten sind: Beobachtung (1-10), Statistik (Mittelwert.1, SD.2, ...) und Wert.

Sie können tidyr ‚s gather Funktion auf einfache Weise die Daten in langen Format umformatieren:

library(tidyr) 

NDVIdf_forplot <- gather(NDVIdf, key = statistic, value = value, -ID) 
ggplot(NDVIdf_forplot, aes(x = statistic, y = value) + geom_line() 

Die gather Funktion nimmt zwei Argumente: Schlüssel und Wert, dass die Spaltennamen für die entsprechenden Felder in der Menge neuer Langformat-Datenrahmen In diesem Fall ist key der Name der neuen Spalte, die die vorherigen Spaltenüberschriften codiert (Mittelwert, sd, ...), und value auf die vorherigen Werte (0.0607, ...).

Der Ausdruck -id sagt gather nicht die ID Spalt, so dass jeder Datensatz in dem neuen Datenrahmen ist immer noch mit der richtigen ID assoziiert zu entfernen. Auf diese Weise können Sie es verwenden, um die verschiedenen Linien im ggplot Aufruf wie folgt zu trennen:

ggplot(NDVIdf_forplot, aes(x = statistic, y= value, group = ID)) + geom_line() 

Und, wenn Sie die verschiedenen Beobachtungen unterschiedlich und umfassen eine Legende färben möchten, können Sie die Farbe ästhetische verwenden:

ggplot(NDVIdf_forplot, aes(x = statistic, y = value, group = ID, colour = ID)) + 
    geom_line() 
+0

Hallo, vielen Dank für Ihre Antwort. Ich versuche es zu implementieren, aber es scheint, dass die Installation des Pakets tidyr nicht funktioniert. Ich habe auch versucht, ordentlich zu installieren, aber eine Fehlermeldung wird am Ende angezeigt – GCGM

+0

Ich kann nicht helfen, ohne Kontext. Es ist wahrscheinlich eine andere Frage wert, wenn Sie die Lösung hier nicht schon finden können.Das heißt, Sie können den gleichen Effekt mit der "Schmelze" -Funktion von "shape2" erreichen, wenn Sie das installieren können. – Eumenedies

+0

Hallo @Eumenedies, ich habe ein sehr ähnliches Problem zu dem in dieser Frage geschrieben. Der einzige Unterschied ist, dass ich meine Daten nicht richtig ordnen kann. Könntest du bitte einen Blick darauf werfen? https://stackoverflow.com/questions/47179207/arrange-dataframe-format-for-gplplot-r ps: wollte diese Frage nicht bearbeiten, da es zu lang wäre und die neue Antwort für andere hilfreich sein könnte – GCGM