我希望使用ggplot绘制一条线周围的阴影区域。这两个数据集没有直接关系,我正在做两者之间的比较。基本上,我希望绘制下面代码产生的输出,以及在变量'lower_region_values'和'upper_region_values'中输入的具有最小和最大y轴值的阴影区域。
请帮我解决这个问题。
可重复的代码从这里开始
library("ggplot2")
plotName <- 'Comparison of latitudinal averages'
xlims <- c(65,80) # x axis extent
input_df <- structure(list(flux = c(0.08733913, 0.1015934,
0.1244135, 0.1390303,0.08417182, 0.02371609),
model = structure(c(1L, 1L, 1L,1L, 1L, 1L),.Label =
c("CASA_GFED_Optimized"), class = "factor"), lat =
c(79, 77, 75, 73, 71, 69)), .Names = c("flux","model",
"lat"),row.names = c(NA, -6L), class = "data.frame")
lower_region_values<-c(-0.002157493,-0.004465291,-0.376925852,
-0.312737571,-0.327533801, -0.299551351)
upper_region_values<-c(1.943331e-06,1.758454e-04,3.183347e-01,
2.442368e-01,1.206353e- 01,1.572531e-02)
sd_input_lower$model <- factor(sd_input_lower$model,
levels=levels(input_df$model))
sd_input_upper$model <- factor(sd_input_upper$model,
levels=levels(input_df$model))
使用两个向量中的值需要阴影区域:lower_region_values和upper_region_values
chart <- ggplot(input_df, aes(x=lat, group=model,
colour=model, fill=model)) +
# geom_ribbon(data = sd_input_upper, aes(ymin = -sd, ymax=sd), alpha=0.5) +
geom_line(aes(y=flux), size=1.0) +
opts(title=plotName,legend.position='bottom') +
scale_x_continuous('Latitude',limits=xlims) +
scale_y_continuous(expression(paste('Latitudinal average of NEE ',
(g~C~m^{-2}/day)))) +
scale_colour_discrete(name='Model') +
scale_fill_discrete(name='Model')
print(chart)
答案 0 :(得分:2)
我会将着色区域添加到同一个data.frame中,因为如果它们都在同一个对象中,那么更容易做ggplots。我得到的情节看起来对我来说有点滑稽,所以我认为我们需要确定当我们添加这些区域时,它们在行中正确匹配x轴值。
input_df$lower_region_values<-c(-0.002157493,-0.004465291,-0.376925852,
-0.312737571,-0.327533801, -0.299551351)
input_df$upper_region_values<-c(1.943331e-06,1.758454e-04,3.183347e-01,
2.442368e-01,1.206353e-01,1.572531e-02)
如果我理解你的目标,我基本上会做你正在做的事情,但是将aes()移动一下:
chart<-
ggplot(input_df, aes(x=lat, y=flux,group=model)) +
geom_line(size=1.0,colour="red") +
opts(title=plotName,legend.position='bottom') +
scale_x_continuous('Latitude',limits=xlims) +
scale_y_continuous(expression(paste('Latitudinal average of NEE ',
(g~C~m^{-2}/day)))) +
geom_ribbon(aes(ymin = lower_region_values,
ymax=upper_region_values), colour="blue", fill="blue",alpha=0.5)
print(chart)
你似乎在使用旧版本的ggplot2,所以如果你还在学习ggplot,我会更新并学习新版本,这会有一些重大变化。