2016-04-07 4 views
0

zu schaffen habe ich einen Datenrahmen unterR - Wie mehr Scatterplots von Datenrahmen

 dw.05.art.rel.ch dw.10.art.rel.ch dw.15.art.rel.ch dw.20.art.rel.ch dw.25.art.rel.ch dw.30.art.rel.ch dw.35.art.rel.ch dw.40.art.rel.ch 
0.25  2.14751794  1.3573794   1.378441  1.0225707   1.250907  1.3704892   1.018457  1.1266434 
0.5  0.06980416  1.5074681   1.618793  1.3340371   1.153321  1.1491761   1.015098  1.0486423 
0.75  -0.53753859  0.5501804   1.215985  1.1780073   1.276440  1.1058739   1.128350  0.9961578 
1.00  -0.28508794  0.4966175   1.049642  0.9306377   1.008549  0.9741328   1.037897  0.9515636 
    dw.45.art.rel.ch dw.50.art.rel.ch 
0.25  1.0668396  1.0484025 
0.5   1.0080182  1.0074631 
0.75  0.9927887  0.9398075 
1.00  0.9711958  1.0396354 

Ich mag würde mehrere Scatterplots aus einem einzigen Datenrahmen erstellen. Die Werte in jeder Reihe (z. B. 0,25) sind die Y-Werte und sind gegen X-Werte aufgetragen, die die Zahlen in dem Spaltennamen sind (z. B. "dw.05.art.rel.ch" ist 5). Beigefügt ist ein Beispiel, das ich in Excel gemacht habe. Ich bin fest, wie man die X-Werte erstellt und wie man mehrere Plots generiert. enter image description here

+0

'matplot (seq (ncol (dd)) * 5, t (dd), type = 'l')' oder 'Grundstück (c (5, 40), c (0, max (dd)), Typ = 'n'); für (ii in 1: nw (dd)) Linien (seq (ncol (dd)) * 5, unlist (dd [ii,]), col = ii) ' – rawr

Antwort

2

Sie können auch ggplot2 verwenden. Lassen Sie uns zuerst die Daten vom Wide- zum Long-Format "schmelzen" und extrahieren Sie die x-Werte aus den Spaltennamen. Angenommen, Ihre Datenrahmen wird dat genannt:

library(dplyr) 
library(reshape2) 
library(ggplot2) 

dat.m = dat %>% 
    add_rownames("group") %>% 
    melt(id.var="group") %>% 
    mutate(x = as.numeric(substr(variable, 4,5))) 

Alle Linien in einem einzigen Diagramm:

ggplot(dat.m, aes(x, value, colour=group)) + 
    geom_point() + 
    geom_line() + 
    theme_bw() 

Mehrere Platten:

ggplot(dat.m, aes(x, value)) + 
    facet_grid(. ~ group) + 
    geom_point() + 
    geom_line() + 
    theme_bw() 

Und hier ist es, was die Diagramme wie folgt aussehen:

enter image description here

enter image description here

Sie können auch einen separaten Diagramm für jeden Wert von group erstellen: Der folgende Code wird alle Graphen speichern (eine für jeden Wert von group) in einer Liste pl genannt. Sie können sie auf der Konsole drucken, als PDF-Datei speichern, usw.

pl = sapply(sort(unique(dat.m$group)), function(i) { 
    ggplot(dat.m[dat.m$group==i, ], aes(x, value)) + 
    facet_wrap(~ group) + 
    geom_point() + 
    geom_line() + 
    theme_bw() 
}, simplify=FALSE) 
0

Ihr Fall ist ziemlich einfach, da die Spaltennamen regelmäßig sind. Angenommen, Ihr Datenframe heißt df:

for (i in 1:dim(df)[1]){ 
    plot(as.numeric(substr(names(df), 4, 5)),df[i,]) 
} 

Dies wird alle Plots mit Grundformatierung machen.

Oder

matplot(seq(ncol(df)) * 5, t(df), type = 'l') 

Oder

plot(c(5, 40), c(0, max(df)), type = 'n') 
for (ii in 1:nrow(df)) 
    lines(seq(ncol(df)) * 5, unlist(df[ii, ]), col = ii) 

Daten

df <- read.table(header = TRUE, text = "dw.05.art.rel.ch dw.10.art.rel.ch dw.15.art.rel.ch dw.20.art.rel.ch dw.25.art.rel.ch dw.30.art.rel.ch dw.35.art.rel.ch dw.40.art.rel.ch 
0.25  2.14751794  1.3573794   1.378441  1.0225707   1.250907  1.3704892   1.018457  1.1266434 
0.5  0.06980416  1.5074681   1.618793  1.3340371   1.153321  1.1491761   1.015098  1.0486423 
0.75  -0.53753859  0.5501804   1.215985  1.1780073   1.276440  1.1058739   1.128350  0.9961578 
1.00  -0.28508794  0.4966175   1.049642  0.9306377   1.008549  0.9741328   1.037897  0.9515636") 
+1

das funktioniert tatsächlich, weiß nicht warum der Downvote, jemand muss schlechte Laune haben oder es war nur Hadley vorbei – rawr