I am currently trying to plot, using a line-related plot, precipitation data (y-axis values) with cumulative emissions data (x-axis) using R. Both of these data are found on two separate netCDF files that I have already read into R. Ultimately, What I would like to do is plot precipitation as a function of cumulative emissions for a selected location (as shown below in the following code). I have, so far, used the following code (with # to highlight each step):
library(raster)
library(ncdf4)
library(maps)
library(maptools)
library(rasterVis)
library(ggplot2)
library(rgdal)
library(sp)
#Geting cumulative emissions data for x-axis
ncfname <- "cumulative_emissions_1pctCO2.nc"
Model1 <- nc_open(ncfname)
print(Model1)
get <- ncvar_get(Model1, "cum_co2_emi-CanESM2") #units of terratones ofcarbon (TtC) for x-axis
print(get)
Year <- ncvar_get(Model1, "time") #140 years
#Getting Model data for extreme precipitation (units of millimeters/day)for y-axis
ncfname1 <- "MaxPrecCCCMACanESM21pctCO2.nc"
Model2 <- nc_open(ncfname1)
print(Model2)
get1 <- ncvar_get(Model2, "onedaymax") #units of millimeters/day
print(get1)
#Reading in latitude, longitude and time from this file:
latitude <- ncvar_get(Model2, "lat") #64 degrees latitude
longitude <- ncvar_get(Model2, "lon") #128 degrees longitude
Year1 <- ncvar_get(Model2, "Year") #140 years
#Plotting attempt
r_brick <- brick(get, xmn=min(latitude), xmx=max(latitude),
ymn=min(longitude), ymx=max(longitude), crs=CRS("+proj=longlat +ellps=WGS84
+datum=WGS84 +no_defs+ towgs84=0,0,0"))
randompointlon <- 30 #selecting a longitude
randompointlat <- -5 #selecting a latitude
Hope <- extract(r_brick,
SpatialPoints(cbind(randompointlon,randompointlat)),method = 'simple')
df <- data.frame(cumulativeemissions=seq(from = 1, to = 140, by = 1),
Precipitation=t(Hope))
ggplot(data = df, aes(x = get, y = Precipitation,
group=1))+geom_line()+ggtitle("One-day maximum precipitation (mm/day)
for random location for CanESM2 1pctCO2 as a function of cumulative
emissions")
print(Model1) yields the following (I read in variable #2 to work with for now):
File cumulative_emissions_1pctCO2.nc (NC_FORMAT_NETCDF4):
14 variables (excluding dimension variables):
float cum_co2_emi-BNU-ESM[time] (Contiguous storage)
long_name: Cumulative carbon emissions for BNU-ESM
units: Tt C
float cum_co2_emi-CanESM2[time] (Contiguous storage)
long_name: Cumulative carbon emissions for CanESM2
units: Tt C
float cum_co2_emi-CESM1-BGC[time] (Contiguous storage)
long_name: Cumulative carbon emissions for CESM1-BGC
units: Tt C
float cum_co2_emi-HadGEM2-ES[time] (Contiguous storage)
long_name: Cumulative carbon emissions for HadGEM2-ES
units: Tt C
float cum_co2_emi-inmcm4[time] (Contiguous storage)
long_name: Cumulative carbon emissions for inmcm4
units: Tt C
float cum_co2_emi-IPSL-CM5A-LR[time] (Contiguous storage)
long_name: Cumulative carbon emissions for IPSL-CM5A-LR
units: Tt C
float cum_co2_emi-IPSL-CM5A-MR[time] (Contiguous storage)
long_name: Cumulative carbon emissions for IPSL-CM5A-MR
units: Tt C
float cum_co2_emi-IPSL-CM5B-LR[time] (Contiguous storage)
long_name: Cumulative carbon emissions for IPSL-CM5B-LR
units: Tt C
float cum_co2_emi-MIROC-ESM[time] (Contiguous storage)
long_name: Cumulative carbon emissions for MIROC-ESM
units: Tt C
float cum_co2_emi-MPI-ESM-LR[time] (Contiguous storage)
long_name: Cumulative carbon emissions for MPI-ESM-LR
units: Tt C
float cum_co2_emi-MPI-ESM-MR[time] (Contiguous storage)
long_name: Cumulative carbon emissions for MPI-ESM-MR
units: Tt C
float cum_co2_emi-NorESM1-ME[time] (Contiguous storage)
long_name: Cumulative carbon emissions for NorESM1-ME
units: Tt C
float cum_co2_emi-GFDL-ESM2G[time] (Contiguous storage)
long_name: Cumulative carbon emissions for GFDL-ESM2G
units: Tt C
float cum_co2_emi-GFDL-ESM2M[time] (Contiguous storage)
long_name: Cumulative carbon emissions for GFDL-ESM2M
units: Tt C
1 dimensions:
time Size:140
units: years since 0-1-1 0:0:0
long_name: time
standard_name: time
calender: noleap
4 global attributes:
description: Cumulative carbon emissions for the 1pctCO2 scenario from the CMIP5 dataset.
history: Created Fri Jul 21 14:50:39 2017
source: CMIP5 archieve
print(Model2) yields the following:
File MaxPrecCCCMACanESM21pctCO2.nc (NC_FORMAT_NETCDF4):
3 variables (excluding dimension variables):
double onedaymax[lon,lat,time] (Contiguous storage)
units: mm/day
double fivedaymax[lon,lat,time] (Contiguous storage)
units: mm/day
short Year[time] (Contiguous storage)
3 dimensions:
time Size:140
lat Size:64
units: degree North
lon Size:128
units: degree East
3 global attributes:
description: Annual global maximum precipitation from the CanESM2 1pctCO2 scenario
history: Created Mon Jun 4 11:24:02 2018
contact: rain1290@aim.com
So, in general, this is what I am trying to achieve, but I am not sure if what I am doing in the ggplot function is the right approach.
Any assistance with this would be greatly appreciated!
Thanks
It is not clear what you are really asking help for. If it has to do with getting data from the ncdf files, that focus on that. If it is about ggplot, that provide some simple data and leave out all the ncdf stuff. Also, I do not know what a "line-related plot" is (perhaps a ggplot thing?). Do you mean a scatter plot?
To get ncdf data, you can do:
library(raster)
Model1 <- brick("cumulative_emissions_1pctCO2.nc", var="cum_co2_emi-CanESM2")
Model2 <- brick("MaxPrecCCCMACanESM21pctCO2.nc", var="onedaymax")
latlon <- cbind(30, -5)
Hope1 <- extract(Model1, lonlat)
Hope2 <- extract(Model2, lonlat)
And now, perhaps:
plot(Hope1, Hope2)