首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用crossbar ggplot2

使用crossbar ggplot2
EN

Stack Overflow用户
提问于 2013-03-11 21:30:57
回答 1查看 1.8K关注 0票数 1

我正在为不同的气候模型绘制柱状图。我想做一个比较模型和观测值的图。

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

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-12 07:29:07

两件事:

  1. 你正在超越群体美学,仅仅是variable,所以在crossbar中,它忽略了不同的x值(将其视为连续的),这就产生了一个奇怪的crossbar。
  2. 我认为你只是想要酒吧本身,而不是它周围的任何范围。如果是,则希望将yminymax设置为中心值,而不是所有中心值的范围。

进行这两个更改:

代码语言:javascript
复制
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)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15339898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档