当x是一个因子时,结合geom_ribbon

时间:2016-03-24 19:12:46

标签: r ggplot2

从此question开始。

x是一个因素时,我无法生成阴影区域。 这是一些示例数据

time <- as.factor(c('A','B','C','D'))
x <- c(1.00,1.03,1.03,1.06)
x.upper <- c(0.91,0.92,0.95,0.90)
x.lower <- c(1.11,1.13,1.17,1.13)

df <- data.frame(time, x, x.upper, x.lower)

ggplot(data = df,aes(time,x))+
  geom_ribbon(aes(x=time, ymax=x.upper, ymin=x.lower), fill="pink", alpha=.5) +
  geom_point()

当我将factor替换为aes()时,我仍然无法获得阴影区域。或者如果我试试这个:

ggplot()+
  geom_ribbon(data = df, aes(x=time, ymax=x.upper, ymin=x.lower), fill="pink", alpha=.5) +
  geom_point(data = df, aes(time,x))

我仍然无法得到阴影。任何想法如何克服这个......

1 个答案:

答案 0 :(得分:2)

我认为aosmith是完全正确的,你只需要将你的因子变量转换为数字。我认为以下代码是您正在寻找的:

ggplot(data = df,aes(as.numeric(time),x))+
  geom_ribbon(aes(x=as.numeric(time), ymax=x.upper, ymin=x.lower),     
  fill="pink", alpha=.5) +
  geom_point()

产生这个情节:

enter image description here

编辑编辑:在下面的评论中将x轴标签更改回@aosmith的原始值:

ggplot(data = df,aes(as.numeric(time),x))+
  geom_ribbon(aes(x=as.numeric(time), ymax=x.upper, ymin=x.lower),     
  fill="pink", alpha=.5) +
  geom_point() + labs(title="My ribbon plot",x="Time",y="Value") +
  scale_x_continuous(breaks = 1:4, labels = levels(df$time))