2016-04-27 9 views
0

facettieren Ich habe kleine Datenrahmen der statistischen Werte von verschiedenen Verfahren erhalten. you can download from here. Datensatz wird wie folgt aussehen:Wie zwei Facetten nebeneinander mit ggplot2 in R

enter image description here

I Facette müssen (zwei Stück nebeneinander mit der gleichen y-Achse Etiketten) zwei Plot von RMSE.SD und MB Variable ggplot2 Paket in R wie im folgenden Beispiel Zahl.

enter image description here

Ich schrieb diesen Code 1 Grundstück für RMSE.SD Variable für das Plotten.

library(ggplot2) 
comparison_korea <- read.csv("comparison_korea.csv") 

    ggplot(data=comparison_korea, aes(R,X))+ 
     geom_point(color = "black", pch=17, alpha=1,na.rm=T, size=4)+ 
     labs(title = "", y = "")+ 

     theme(plot.title= element_text(hjust = 0.5,size = 15, vjust = 0.5, face= c("bold")), 
      axis.ticks.length = unit(0.2,"cm") , 
      panel.border = element_rect(colour = "black", fill=NA, size=0.5), 
      axis.text.x = element_text(angle = 0, vjust = 0.5, size = 14, hjust = 0.5,margin=margin(4,0,0,0), colour = "black"), 
      axis.text.y = element_text(angle = 0, vjust = 0.5, size = 14, hjust = 1,margin=margin(0,5,0,0), colour = "black"), 
      plot.margin = unit(c(1, 1.5, 1, 0.5), "lines")) 
+0

Findest du es nicht direkt Facette kann, da beide geom_point Plots verschiedene x und y Argument verwendet. Betrachten Sie stattdessen zwei separate ggplots (g1 als RMSE.SD-Plot & g2 als MB-Plot) und setzen Sie sie nebeneinander mit "grid.arrange (g1, g2, nrow = 1)". Sie müssten das Paket 'gridExtra' für grid.arrange installieren und laden. –

+2

Sie müssen Ihre Variable zu einem langen Format schmelzen, so dass Sie eine 'variable' Variable haben, um sich zu facettieren. – alistaire

Antwort

0

Sie sollten in der Lage sein, so etwas zu tun:

library(ggplot2) 

ds <- read.csv("comparison_korea.csv") 
dat <- data.frame(labels = as.character(ds$X), 
        RMSE.SD = ds$RMSE.SD, 
        MB = ds$MB) 
dat <- reshape2::melt(dat) 

ggplot(dat, aes(y = labels, x = value)) + 
    geom_point(shape = "+", size = 5) + 
    facet_wrap(~variable) + 
    xlab("value/reference (mm)") + 
    ylab("") + 
    theme_bw() 
+0

@ royr2, Vielen Dank. Ich kann aus dem resultierenden Plot erkennen, dass die "xlim" von beiden Plots dieselben sind, was diese Plot visuell schlecht macht. Kann ich ein anderes "xlim" für zwei verschiedene Plots festlegen, wie das Beispiel, das ich in meinem Beitrag geteilt habe? – Orpheus

+1

@ Orpheus nur freie Skalen angeben: 'facet_wrap (~ Variable, Skalen =" free_x ")'. – Gregor