2014-09-17 16 views
8

Dies ist mein CodeEntfernen Raum zwischen den Stäben ggplot2

ggplot(df, aes(x=timepoint, y=mean, fill=group)) + 
      geom_bar(position=position_dodge(.3), colour="black", stat="identity", width=0.3, , binwidth=0) + 
      geom_errorbar(position=position_dodge(.3), width=.25, aes(ymin=mean, ymax=mean+sem)) + 
      scale_fill_manual(values=c("#FFFFFF", "#000000"), guide=FALSE) + 
      theme_bw() + 
      ylab(ylab) + 
      xlab("") + 
      # xlim("Baseline", "12w") + 
      scale_x_discrete(expand = c(0,0), limits=c("Baseline","12w")) + 
      scale_y_continuous(expand = c(0,0)) + 
      theme(panel.border = element_blank(), panel.grid.major = element_blank(), 
        panel.grid.minor = element_blank(), axis.line = element_line(colour = "black")) 

Diese MY Ausgabe ist, die ich möchte nicht, es ist zu viel Platz zwischen "Baseline" und "12w":

enter image description here

Wie entferne ich den Abstand zwischen den Stäben?

Danke

df ist wie folgt:

df <- structure(list(group = c("a1.d.ffa.mean Dysglyc", "a1.c.ffa.mean Control", 
"b1.d.ffa.mean Dysglyc", "b1.c.ffa.mean Control"), timepoint = c("Baseline", 
"Baseline", "12w", "12w"), mean = c(1.913509, 2.181959, 2.742249, 
1.50846), sem = c(0.10663114, 0.08360294, 0.07890374, 0.08348542 
), p.value = c(0.597738161, 1, 0.007885464, 1), p.value.t = c(0.04408, 
1, 0.2455049, 1)), .Names = c("group", "timepoint", "mean", "sem", 
"p.value", "p.value.t"), class = "data.frame", row.names = c(NA, 
-4L)) 

df 

        group timepoint  mean  sem  p.value p.value.t 
1 a1.d.ffa.mean Dysglyc Baseline 1.913509 0.10663114 0.597738161 0.0440800 
2 a1.c.ffa.mean Control Baseline 2.181959 0.08360294 1.000000000 1.0000000 
3 b1.d.ffa.mean Dysglyc  12w 2.742249 0.07890374 0.007885464 0.2455049 
4 b1.c.ffa.mean Control  12w 1.508460 0.08348542 1.000000000 1.0000000 
+0

die Breite der Plotten Vorrichtung reduzieren. – Roland

+0

@Roland Kann ich fragen, wie? Ich kann nicht einfach innerhalb von R die Größe ändern, das Verhältnis bleibt unverändert. – nOOb

+0

Können Sie die verwendeten Daten angeben? –

Antwort

5

Genau das Einstellen Breite:

ggplot(df, aes(x=timepoint, y=mean, fill=group)) + 
    geom_bar(position=position_dodge(0.9), colour="black", stat="identity", width=0.9, , binwidth=0) + 
    geom_errorbar(position=position_dodge(0.9), width=0.85, aes(ymin=mean, ymax=mean+sem)) + 
    theme_bw() 

enter image description here

+0

Ok, also benutze das relevel(), wie von @Paulo vorgeschlagen, um die Grundlinie vor 12W zu bekommen. Wissen Sie, wie Sie das "ymin" aus dem Fehlerbalken-Argument entfernen können? Ich habe es "gehackt", indem ich es so eingestellt habe, dass es gemein ist, aber es ist hässlich. – nOOb

+0

Ich habe deine Frage beantwortet. Bitte fügen Sie keine zusätzlichen Fragen in Kommentaren hinzu. – Roland

2

So etwas wie das?

df <- structure(list(group = structure(c(2L, 1L, 4L, 3L), .Label = c("a1.c.ffa.mean Control", 
"a1.d.ffa.mean Dysglyc", "b1.c.ffa.mean Control", "b1.d.ffa.mean Dysglyc" 
), class = "factor"), timepoint = structure(c(1L, 1L, NA, NA), .Label = c("Baseline", 
"12W"), class = "factor"), mean = c(1.913509, 2.181959, 2.742249, 
1.50846), sem = c(0.10663114, 0.08360294, 0.07890374, 0.08348542 
), p.value = c(0.597738161, 1, 0.007885464, 1), p.value.t = c(0.04408, 
1, 0.2455049, 1)), .Names = c("group", "timepoint", "mean", "sem", 
"p.value", "p.value.t"), row.names = c(NA, -4L), class = "data.frame") 

Neuordnungsfaktorstufen mit

df$timepoint <- factor(df$timepoint, 
         levels= c('Baseline', '12W')) 

Grundstück es

ggplot(df, aes(x=factor(timepoint), y=mean, fill=group)) + 
    geom_bar(position=position_dodge(.3), colour="black", 
      stat="identity", width=0.3, , binwidth=0) + 
    geom_errorbar(position=position_dodge(.3), width=.25, 
       aes(ymin=mean, ymax=mean+sem)) + 
    scale_fill_manual(values=c("#FFFFFF", "#000000","#FFFFFF", "#000000"), 
        guide=FALSE) + 
    theme_bw() + 
    labs(list(x="", y='skeletal muscle FFA g/100g')) + 
    # xlim("Baseline", "12w") + 
    scale_x_discrete(expand = c(0,0)) + 
    scale_y_continuous(expand = c(0,0)) + 
    theme(panel.border = element_blank(), panel.grid.major = element_blank(), 
     panel.grid.minor = element_blank(), 
     axis.line = element_line(colour = "black")) 

geom_bar

die ziemlich nah an Ihrem Beispiel ist ...

+0

Baseline sollte vor 12w kommen. Und trotzdem gibt es eine große Lücke zwischen der Baseline und den 12W-Bars! Ich möchte Baseline und 12w sehr nahe zusammen. Danke für die Mühe! – nOOb

+0

Bitte aktuelles Bild im Original ansehen! Danke nochmal. – nOOb

Verwandte Themen