Eclipse 使用纵横制ggplot2

Eclipse 使用纵横制ggplot2,eclipse,r,cran,Eclipse,R,Cran,我正在为不同的气候模型绘制条形图。我想画一幅图,比较模型和观测值。气候模型将绘制为条形图(geom_bar()),但我希望有观测横杆 下面的脚本绘制了一个图,但在图形上方绘制了一些东西(倒三角形)。这个脚本怎么了?我是不是遗漏了什么 ch<-structure(list(Month = structure(c(4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 1L, 2L, 3L), .Label = c("Oct", "Nov", "Dec", "Jan",

我正在为不同的气候模型绘制条形图。我想画一幅图,比较模型和观测值。气候模型将绘制为条形图(geom_bar()),但我希望有观测横杆

下面的脚本绘制了一个图,但在图形上方绘制了一些东西(倒三角形)。这个脚本怎么了?我是不是遗漏了什么

ch<-structure(list(Month = structure(c(4L, 5L, 6L, 7L, 8L, 9L, 10L, 
11L, 12L, 1L, 2L, 3L), .Label = c("Oct", "Nov", "Dec", "Jan", 
"Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep"), class = c("ordered", 
"factor")), GCM1 = c(169.5, 157.19, 90.07, 42.97, 13.24, 1.56, 
2.53, 5.99, 14.92, 46.35, 88.23, 138.02), GCM2 = c(215.01, 193.37, 
131.14, 41.48, 7.63, 0.94, 0.81, 0.78, 1.88, 15.95, 99.58, 188.16
), GCM3 = c(164.83, 158.82, 97.5, 29.27, 5.47, 2.14, 3.34, 0.85, 
9.94, 16.9, 57.21, 117.05), OBS = c(142.25, 138.59, 59.95, 26.48, 
2.61, 0.2, 0.1, 0.4, 0.72, 11.64, 38.75, 119.82)), .Names = c("Month", 
"GCM1", "GCM2", "GCM3", "OBS"), row.names = c(NA, -12L), class = "data.frame")

ch$Month<-month.abb
ch$Month<-factor(ch$Month, levels=c(month.abb[10:12],month.abb[1:9]), ordered=TRUE)

chm<-melt(ch, id="Month")

cbPalette1 <- cbbPalette <- c("#D55E00", "#56B4E9", "#009E73","#0072B2", "#CC79A7","#000000")

p<-ggplot(data=chm,aes(x=factor(Month),y=value,group=variable,fill=variable))+geom_bar(subset = .(variable != "OBS"),stat="identity",position=position_dodge())+
                scale_fill_manual(values=cbPalette1)+
                geom_crossbar(subset = .(variable == "OBS"),aes(ymin = min(value), ymax = max(value)), col="gray30",fatten=3)
ch两件事:

  • 您正在覆盖组美学,使其仅为
    变量
    ,因此 在纵横制中,它忽略不同的
    x
    值(处理 这是一个奇怪的纵横杆

  • 我想你只是想要酒吧本身,而不是它周围的任何范围。 如果是,您希望将
    ymin
    ymax
    设置为中心值,而不是 到所有中心值的范围

  • 进行这两项更改:

    p<-ggplot(data=chm,
              aes(x = Month,
                  y = value,
                  fill = variable)) +
      geom_bar(subset = .(variable != "OBS"), 
               stat="identity",
               position=position_dodge()) +
      scale_fill_manual(values=cbPalette1)+
      geom_crossbar(subset = .(variable == "OBS"),
                    aes(ymin = value, ymax = value), 
                    col="gray30", fatten=3)
    
    p两件事:

  • 您正在覆盖组美学,使其仅为
    变量
    ,因此 在纵横制中,它忽略不同的
    x
    值(处理 这是一个奇怪的纵横杆

  • 我想你只是想要酒吧本身,而不是它周围的任何范围。 如果是,您希望将
    ymin
    ymax
    设置为中心值,而不是 到所有中心值的范围

  • 进行这两项更改:

    p<-ggplot(data=chm,
              aes(x = Month,
                  y = value,
                  fill = variable)) +
      geom_bar(subset = .(variable != "OBS"), 
               stat="identity",
               position=position_dodge()) +
      scale_fill_manual(values=cbPalette1)+
      geom_crossbar(subset = .(variable == "OBS"),
                    aes(ymin = value, ymax = value), 
                    col="gray30", fatten=3)
    

    p由于缺少
    OBS
    对象,您的问题不可再现。它不可再现,但我不确定这是否是原因。ch.juba&Arun中有一个OBS列,我删除了“data=OBS”部分。这是一次纠正问题的尝试。您的问题不可复制,因为缺少
    OBS
    对象。它不可复制,但我不确定这是否是原因。ch.juba&Arun中有一个OBS列,我删除了“data=OBS”部分。这是一次纠正问题的尝试。谢谢Brian,这是我想要实现的。谢谢Brian,这是我想要实现的。