2014-09-17 31 views
8

Đây là mã của tôiRemove khoảng cách giữa các thanh 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")) 

Đây là sản lượng MY, mà tôi không muốn, quá nhiều không gian của mình giữa "cơ bản" và "12W":

enter image description here

Làm thế nào để loại bỏ không gian giữa các thanh?

Cảm ơn bạn

df là như thế này:

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

Giảm chiều rộng của thiết bị âm mưu. – Roland

+0

@Roland Tôi có thể hỏi như thế nào không? Tôi không thể đơn giản thay đổi kích thước trong R, các khía cạnh tỷ lệ đó vẫn giữ nguyên. – nOOb

+0

Bạn có thể cung cấp dữ liệu được sử dụng không? –

Trả lời

5

Chỉ cần điều chỉnh rộng:

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, vì vậy hãy sử dụng relevel(), như đề xuất bởi @Paulo để lấy đường cơ sở trước 12w. Bạn có biết cách xóa "ymin" khỏi đối số thanh lỗi không? Tôi "hack" nó bằng cách thiết lập nó bằng với ý nghĩa của nó, nhưng nó xấu xí. – nOOb

+0

Tôi đã trả lời câu hỏi của bạn. Vui lòng không thêm câu hỏi bổ sung trong nhận xét. – Roland

2

Something như thế này?

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") 

mức yếu tố sắp xếp lại với

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

cốt truyện nó

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

Đó là khá gần với ví dụ của bạn ...

+0

Đường cơ sở phải đến trước 12w. Và vẫn còn có một khoảng cách rất lớn giữa đường cơ sở và thanh 12w! Tôi muốn đường cơ sở và 12w rất gần nhau. Cảm ơn vì nỗ lực của bạn! – nOOb

+0

Vui lòng xem ảnh cập nhật trong bài đăng gốc! Cám ơn bạn một lần nữa. – nOOb

Các vấn đề liên quan