1

我正在为不同的气候模型绘制条形图。我想制作一个将模型与观察结果进行比较的图。气候模型将绘制为条形图(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)

…………

提前谢谢了

BHH

4

1 回答 1

1

两件事情:

  1. 您将组美学压倒在 be variable,因此在横梁中,它忽略了不同的x值(将其视为连续的),这给出了一个奇怪的横梁。

  2. 我认为你只想要酒吧本身,而不是它周围的任何程度。如果是这样,您希望将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)

在此处输入图像描述

于 2013-03-11T23:29:06.727 回答