2014-02-18 56 views
0

數據:如何繪製ggplot2中預定義的上限和下限之間的區域?

Morocco_ObsClim

Morocco_ProjClim

代碼:

Morocco_ObservedClim <- read.csv(file = "Morocco_ObservedClim.csv", header=TRUE, sep=",", na.string="NA", dec=".", strip.white=TRUE) 
Morocco_ProjectedClim <- read.csv(file = "Morocco_ProjectedClim.csv", header=TRUE, sep=",", na.string="NA", dec=".", strip.white=TRUE) 

# Select the data 

obs_annualanom.df <- subset(Morocco_ObservedClim, DataSource %in% c("avg") & DataFormat %in% c("anom") & Timeframe %in% c("annual")) 
obs_annualanom.df <- obs_annualanom.df[1:41,] 
proj_annualanom.df <- subset(Morocco_ProjectedClim, gcm %in% c("avg","min","max") & DataFormat %in% c("anom") & Timeframe %in% c("annual")) 

# Melting the data 

obs_annualanom.df <- melt(obs_annualanom.df, id.vars=c("Year","DataSource","DataFormat","Timeframe")) 
proj_annualanom.df <- melt(proj_annualanom.df, id.vars=c("Year","sres","gcm","DataFormat","Timeframe")) 

# Plots 

precip <- ggplot(data=obs_annualanom.df) + geom_line(aes(Year,value),subset=.(variable %in% c("Precip")),size=1.1) 
precip <- precip + geom_line(data=proj_annualanom.df, aes(Year,value),colour="brown",size=1.1,subset=.(variable %in% c("Precip") & gcm %in% c("avg") & sres %in% c("20thC"))) 
precip <- precip + geom_area(data=proj_annualanom.df, aes(Year,value),fill="tan1",alpha=0.5,subset=.(variable %in% c("Precip") & gcm %in% c("max") & sres %in% c("20thC"))) 
precip <- precip + geom_area(data=proj_annualanom.df, aes(Year,value),fill="tan1",alpha=0.5,subset=.(variable %in% c("Precip") & gcm %in% c("min") & sres %in% c("20thC"))) 
precip <- precip + geom_line(data=proj_annualanom.df, aes(Year,value),colour="red",size=1.1,subset=.(variable %in% c("Precip") & gcm %in% c("avg") & sres %in% c("A2"))) 
precip <- precip + geom_area(data=proj_annualanom.df, aes(Year,value),fill="red3",alpha=0.3,subset=.(variable %in% c("Precip") & gcm %in% c("max") & sres %in% c("A2"))) 
precip <- precip + geom_area(data=proj_annualanom.df, aes(Year,value),fill="red3",alpha=0.3,subset=.(variable %in% c("Precip") & gcm %in% c("min") & sres %in% c("A2"))) 
precip <- precip + geom_line(data=proj_annualanom.df, aes(Year,value),colour="blue",size=1.1,subset=.(variable %in% c("Precip") & gcm %in% c("avg") & sres %in% c("A1B"))) 
precip <- precip + geom_area(data=proj_annualanom.df, aes(Year,value),fill="royalblue3",alpha=0.3,subset=.(variable %in% c("Precip") & gcm %in% c("max") & sres %in% c("A1B"))) 
precip <- precip + geom_area(data=proj_annualanom.df, aes(Year,value),fill="royalblue3",alpha=0.3,subset=.(variable %in% c("Precip") & gcm %in% c("min") & sres %in% c("A1B"))) 
precip <- precip + geom_line(data=proj_annualanom.df, aes(Year,value),colour="green4",size=1.1,subset=.(variable %in% c("Precip") & gcm %in% c("avg") & sres %in% c("B1"))) 
precip <- precip + geom_area(data=proj_annualanom.df, aes(Year,value),fill="palegreen3",alpha=0.3,subset=.(variable %in% c("Precip") & gcm %in% c("max") & sres %in% c("B1"))) 
precip <- precip + geom_area(data=proj_annualanom.df, aes(Year,value),fill="palegreen3",alpha=0.3,subset=.(variable %in% c("Precip") & gcm %in% c("min") & sres %in% c("B1"))) 
precip <- precip + labs(title="Precipitation",y="Anomalies (mm/year)", x="") + theme_bw() 
#precip <- precip + scale_x_discrete(breaks=seq(by=20)) #+ scale_y_continuous(breaks = seq(-50, 80, by=25)) 
precip <- precip + theme(plot.title=element_text(face="bold", size=rel(2), hjust=0.5, vjust=1.5), 
        axis.text.x=element_text(color="black", size=rel(2.5), hjust=0.5, vjust=0.5), 
        axis.text.y=element_text(color="black", size=rel(2.5), hjust=1), 
        axis.title=element_text(face="bold", color="black", size=rel(1.7), hjust=0.5, vjust=0.2)) 

temp <- ggplot(data=obs_annualanom.df) + geom_line(aes(Year,value),subset=.(variable %in% c("Temp")),size=1.1) 
temp <- temp + geom_line(data=proj_annualanom.df, aes(Year,value),colour="brown",size=1.1,subset=.(variable %in% c("Temp") & gcm %in% c("avg") & sres %in% c("20thC"))) 
temp <- temp + geom_area(data=proj_annualanom.df, aes(Year,value),fill="tan1",alpha=0.5,subset=.(variable %in% c("Temp") & gcm %in% c("max") & sres %in% c("20thC"))) 
temp <- temp + geom_area(data=proj_annualanom.df, aes(Year,value),fill="tan1",alpha=0.5,subset=.(variable %in% c("Temp") & gcm %in% c("min") & sres %in% c("20thC"))) 
temp <- temp + geom_line(data=proj_annualanom.df, aes(Year,value),colour="red",size=1.1,subset=.(variable %in% c("Temp") & gcm %in% c("avg") & sres %in% c("A2"))) 
temp <- temp + geom_area(data=proj_annualanom.df, aes(Year,value),fill="red3",alpha=0.3,subset=.(variable %in% c("Temp") & gcm %in% c("max") & sres %in% c("A2"))) 
temp <- temp + geom_area(data=proj_annualanom.df, aes(Year,value),fill="red3",alpha=0.3,subset=.(variable %in% c("Temp") & gcm %in% c("min") & sres %in% c("A2"))) 
temp <- temp + geom_line(data=proj_annualanom.df, aes(Year,value),colour="blue",size=1.1,subset=.(variable %in% c("Temp") & gcm %in% c("avg") & sres %in% c("A1B"))) 
temp <- temp + geom_area(data=proj_annualanom.df, aes(Year,value),fill="royalblue3",alpha=0.3,subset=.(variable %in% c("Temp") & gcm %in% c("max") & sres %in% c("A1B"))) 
temp <- temp + geom_area(data=proj_annualanom.df, aes(Year,value),fill="royalblue3",alpha=0.3,subset=.(variable %in% c("Temp") & gcm %in% c("min") & sres %in% c("A1B"))) 
temp <- temp + geom_line(data=proj_annualanom.df, aes(Year,value),colour="green4",size=1.1,subset=.(variable %in% c("Temp") & gcm %in% c("avg") & sres %in% c("B1"))) 
temp <- temp + geom_area(data=proj_annualanom.df, aes(Year,value),fill="palegreen3",alpha=0.3,subset=.(variable %in% c("Temp") & gcm %in% c("max") & sres %in% c("B1"))) 
temp <- temp + geom_area(data=proj_annualanom.df, aes(Year,value),fill="palegreen3",alpha=0.3,subset=.(variable %in% c("Temp") & gcm %in% c("min") & sres %in% c("B1"))) 
temp <- temp + labs(title="Temperature",y="Anomalies (degree C)", x="") + theme_bw() 
#temp <- temp + scale_x_discrete(breaks=seq(by=20)) #+ scale_y_continuous(breaks = seq(-50, 80, by=25)) 
temp <- temp + theme(plot.title=element_text(face="bold", size=rel(2), hjust=0.5, vjust=1.5), 
       axis.text.x=element_text(color="black", size=rel(2.5), hjust=0.5, vjust=0.5), 
       axis.text.y=element_text(color="black", size=rel(2.5), hjust=1), 
       axis.title=element_text(face="bold", color="black", size=rel(1.7), hjust=0.5, vjust=0.2)) 

我的結果:

Morocco_Precip

Morocco_Temp

我的目標:重現該曲線圖

MyObjective

圖形命名法:

實線表示平均值。

填充區域應該表示數據中可用的最大值和最小值。

我遇到的問題是我想要達到以下效果: 首先,根據我的結果圖繪製成功完成的平均值。 其次,能夠在數據中的最小值和最大值之間設置填充,這是我失敗的地方。

任何幫助,將不勝感激。

謝謝

回答

2

我認爲你是過於複雜的東西。試想一下:

df <- subset(
    Morocco_ProjectedClim, 
    DataFormat=="anom" & gcm %in% c("avg", "min", "max") & Timeframe=="annual", 
    select=c("sres", "Year", "gcm", "Temp") 
) 
df.cast <- dcast(df, sres + Year ~ gcm) 
library(ggplot2) 
ggplot(df.cast, aes(x=Year, y=avg)) + 
    geom_ribbon(aes(ymin=min, ymax=max, fill=sres), alpha=0.4) + 
    geom_line(aes(color=sres)) + 
    scale_fill_manual(values=c("tan1", "red3", "royalblue3", "palegreen3")) + 
    scale_color_manual(values=c("brown", "red", "blue", "green4")) 

enter image description here

這不只是從投影數據集的溫度,但應該給你如何解決這個問題是一個好主意。


編輯:這增加了實際值:

ggplot(df.cast, aes(x=Year, y=avg)) + 
    geom_ribbon(aes(ymin=min, ymax=max, fill=sres), alpha=0.4) + 
    geom_line(aes(color=sres)) + 
    geom_line(
    data=subset(Morocco_ObservedClim, DataSource == "avg" & DataFormat == "anom" & Timeframe == "annual"), 
    aes(x=Year, y=Temp, color="Actual") 
) + 
    scale_fill_manual(values=c("tan1", "red3", "royalblue3", "palegreen3")) + 
    scale_color_manual(values=c(`20thC`="brown", A1B="red", A2="blue", B1="green4", Actual="black")) 

但請注意我沒有更新的情節。

+0

打我吧。我將包含兩個數據集的使用,所以我的版本只用'ggplot()+ ...'開始,然後用「觀察」數據集開始一個'geom_line()',然後基本上你做了什麼。 – joran

+0

@joran,隨時發佈您的版本;你多走了一英里,所以不妨。 – BrodieG

+0

@joran,請張貼您的版本。 – iouraich

相關問題