Title: | Landuse Plot Library |
---|---|
Description: | Some useful functions to plot data such as a map plot function for MAgPIE objects. |
Authors: | Benjamin Leon Bodirsky [aut, cre], Jan Philipp Dietrich [aut], Michael Krause [aut], Miodrag Stevanovic [aut], Florian Humpenoeder [aut], Isabelle Weindl [aut], Lavinia Baumstark [aut], David Klein [aut], Susanne Rolinski [aut], Xiaoxi Wang [aut], David Chen [aut], Pascal Sauer [aut] |
Maintainer: | Benjamin Bodirsky <[email protected]> |
License: | LGPL-3 | file LICENSE |
Version: | 4.0.1 |
Built: | 2024-12-03 04:27:39 UTC |
Source: | https://github.com/pik-piam/luplot |
Some useful functions to plot data such as a map plot function for MAgPIE objects
Package: | luplot |
Type: | Package |
Version: | 3.11 |
Date: | 2017-02-06 |
License: | LGPL-3 |
LazyLoad: | yes |
Benjamin Bodirsky, Jan Philipp Dietrich, Michael Krause, Miodrag Stevanovic, Florian Humpenoeder
Maintainer: Benjamin Bodirsky <[email protected]>
Useful links:
Aggregates Data for an area chart. The value of all underlying regions/years/timesteps are added to the value of the current region/year/timestep.
aggregateForPlot(plotdata, dimension="region",regionPlotorder=NULL)
aggregateForPlot(plotdata, dimension="region",regionPlotorder=NULL)
plotdata |
An MAgPIE object |
dimension |
by "region", "name" or "year" |
regionPlotorder |
allows to change the order of the regions by giving a vector with the order |
A MAgPIE object of the same dimensions as plotdata
Benjamin Bodirsky
## Not run: data(population_magpie) #no aggregation scratch_plot(population_magpie[,,2]) #aggregation scratch_plot(aggregateForPlot(population_magpie[,,2],regionPlotorder=c(10,1:9))) ## End(Not run)
## Not run: data(population_magpie) #no aggregation scratch_plot(population_magpie[,,2]) #aggregation scratch_plot(aggregateForPlot(population_magpie[,,2],regionPlotorder=c(10,1:9))) ## End(Not run)
Converts a MAgPIE object or a list of MAgPIE objects into a dataframe usable for ggplot
as.ggplot(x,scenario="default",asDate=T,rev=F,useDimNames=FALSE)
as.ggplot(x,scenario="default",asDate=T,rev=F,useDimNames=FALSE)
x |
MAgPIE object or list of MAgPIE objects. For a list of MAgPIE objects the name of the list entry (has to be character) is used as scenario name. |
scenario |
Name of the scenario (only used if x is not a list) or position of the entry in the third dimension that contains the scenario name (only if the scenario name is stored in the third dimension) or NULL (automatic detection) |
asDate |
Format the years as date (TRUE) or keep as is (FALSE); deprecated (only kept for compatibility with older scripts) |
rev |
reverse legend order (TRUE) or not (FALSE) |
useDimNames |
Use dim names of 3rd dimension instead Data1, Data2, Data3, Data4; works only if x is a MAgPIE object (no list) and scenario=NULL |
Dataframe usable for ggplot
Florian Humpenoeder, David Klein
## Not run: as.ggplot(croparea(gdx)) ## End(Not run) ## Not run: prices <- list() prices[["Scenario1"]] <- prices("Scenario1.gdx",crops=c("tece","maiz")) prices[["Scenario2"]] <- prices("Scenario2.gdx",crops=c("tece","maiz")) as.ggplot(prices) ## End(Not run)
## Not run: as.ggplot(croparea(gdx)) ## End(Not run) ## Not run: prices <- list() prices[["Scenario1"]] <- prices("Scenario1.gdx",crops=c("tece","maiz")) prices[["Scenario2"]] <- prices("Scenario2.gdx",crops=c("tece","maiz")) as.ggplot(prices) ## End(Not run)
Plot for decomposition analysis. Use function deco in library magpie4 to create the necessary object.
deco_plot(x, color = gray.colors(6))
deco_plot(x, color = gray.colors(6))
x |
magpie object with decomposition data (e.g. from the function magpie4:::deco) |
color |
color vector |
a ggplot object
Benjamin Leon Bodirsky, Ina Neher
Converts a MAgPIE object into a dataframe usable for ggplot
gginput(data, scatter=NULL, mappings=NULL, na.rm=FALSE, verbose=TRUE)
gginput(data, scatter=NULL, mappings=NULL, na.rm=FALSE, verbose=TRUE)
data |
MAgPIE object which provides the data for ggplot |
scatter |
In the case you want to make a scatterplot you have to specify here which data dimension of the MAgPIE object should be used for the scatter plot (name of the dimension) |
mappings |
A list of mappings used to create combinations of columns which then can be used for aesthetics in ggplot |
na.rm |
Boolean which decides whether NA values should be removed from the data. |
verbose |
Boolean which decides whether info messages should be printed to screen or not. |
Dataframe usable for ggplot
Jan Philipp Dietrich
## Not run: library(ggplot2) data(population_magpie) ggplot(gginput(population_magpie,scatter="scenario"),aes(x=.value.A2,y=.value.B1,color=i)) + geom_point() + geom_smooth(method="loess") + facet_wrap(~.spat1) ## End(Not run)
## Not run: library(ggplot2) data(population_magpie) ggplot(gginput(population_magpie,scatter="scenario"),aes(x=.value.A2,y=.value.B1,color=i)) + geom_point() + geom_smooth(method="loess") + facet_wrap(~.spat1) ## End(Not run)
Function for plotting MAgPIE objects with ggplot2
magpie2ggplot2(data,scenario="default",ylab="Value",title=NULL, xaxis="Year",yaxis="Value",facet_x="Region", facet_y=NULL, geom="line",stack=F,color="Scenario",fill="Region", shape=NULL,linetype=NULL,alpha=NULL,labs=NULL,stat=NULL, text_size=11,hline=NULL,legend_position="right", scales="fixed",ncol=5,xlim=NULL,ylim=NULL,file=NULL, scale=NULL, breaks_x=waiver(),breaks_y=waiver(), xaxis_angle=90,xlab="Year",linewidth=1,pointwidth=2, color_pal=NULL,bar_width=NULL,show_grid=FALSE, group="Region",axis_text_col="black",zoom=FALSE, space="fixed",legend_nrow=NULL,legend_ncol=NULL, facet_style="default",na.rm=FALSE, stack_share=FALSE,point_position="identity", normalize=NULL,...)
magpie2ggplot2(data,scenario="default",ylab="Value",title=NULL, xaxis="Year",yaxis="Value",facet_x="Region", facet_y=NULL, geom="line",stack=F,color="Scenario",fill="Region", shape=NULL,linetype=NULL,alpha=NULL,labs=NULL,stat=NULL, text_size=11,hline=NULL,legend_position="right", scales="fixed",ncol=5,xlim=NULL,ylim=NULL,file=NULL, scale=NULL, breaks_x=waiver(),breaks_y=waiver(), xaxis_angle=90,xlab="Year",linewidth=1,pointwidth=2, color_pal=NULL,bar_width=NULL,show_grid=FALSE, group="Region",axis_text_col="black",zoom=FALSE, space="fixed",legend_nrow=NULL,legend_ncol=NULL, facet_style="default",na.rm=FALSE, stack_share=FALSE,point_position="identity", normalize=NULL,...)
data |
MAgPIE object or list of MAgPIE objects or dataframe of MAgPIE object(s); the name of the list entries is used as scenario name in the legend |
scenario |
If the scenario name is stored in the third dimension: position of the entry in the third dimension that contains the scenario name. Default: "default" |
ylab |
y-axis text |
title |
title appering at the top of the plot |
xaxis |
x-axis of the plot, default: "Year" |
yaxis |
y-axis of the plot, default: "Value" |
facet_x |
x-axis facet, default: "Region" |
facet_y |
y-axis facet, default: NULL |
geom |
"line","point","bar", or "area". If "none" only the ggplot base object is returned. |
stack |
stacked bar plot (TRUE) or not (FALSE) |
color |
Dimension to be colored, default: "Scenario" |
fill |
Dimension to be filled in stacked plots, default: NULL |
shape |
Dimension to be shaped, default: NULL |
linetype |
Dimension to differ in linetypes, default: NULL |
alpha |
Dimension to be transparent in stacked plots, default: NULL |
labs |
vector with legend titles for color,fill,shape,alpha,linetype |
stat |
adds statistics (e.g. "sum" or "mean"), default: NULL |
text_size |
text size of axis, legend and title |
hline |
NULL or MAgPIE objects. Adds a horizontal line. |
legend_position |
right (default), left, top, bottom or none |
scales |
fixed (default), free, free_y or free_x; ?facetgrid for details |
ncol |
Number of columns used in facet_wrap function |
xlim |
x axis limits; NULL or vector with limits |
ylim |
y axis limits; NULL or vector with limits |
file |
File name the output should be written to using ggsave |
scale |
scaling of ggplot2 object before saving to file |
breaks_x |
Vector of x-axis breaks, by default ggplot2 takes the decision |
breaks_y |
Vector of y-axis breaks, by default ggplot2 takes the decision |
xaxis_angle |
Angle of xaxis text in degree, default=90 |
xlab |
x-axis text |
linewidth |
linewidth, default=1 |
pointwidth |
pointwidth, default=3 |
color_pal |
vector of colors defining the color palette, if NULL colors are chosen automaticly |
bar_width |
width of bars in geom bar, default value: NULL |
show_grid |
show minor and major grid lines; FALSE (default) or TRUE |
group |
dimension used for grouping; default value: "Region" |
axis_text_col |
color of axis text and ticks; default value: "black" |
zoom |
TRUE zooms the plot according to xlim and ylim, FALSE omits values not the range of xlim and ylim |
space |
fixed (default), free, free_y or free_x; ?facetgrid for details |
legend_nrow |
Number of rows used in legend |
legend_ncol |
Number of columns used in legend |
facet_style |
style of facets, default or paper |
na.rm |
Boolean deciding whether NA values should be filtered out of the data or not. |
stack_share |
stacked bar plot showing shares (TRUE) or absolut values (FALSE) |
point_position |
position of points; "identity" or position_dodge(width = 1) |
normalize |
NULL (default) or year which should be used to normalize the data |
... |
Further options passed to as.ggplot |
ggplot2 object representing one or more MAgPIE objects.
Florian Humpenoeder, David Klein
## Not run: crop_area_reg <- list() crop_area_reg[["scenario_name"]] <- croparea("fulldata.gdx") magpie2ggplot2(crop_area_reg,ylab="10^6 ha",title="Croparea",stack=T,facet_x="Scenario",color=NULL) ## End(Not run) ## Not run: prices <- list() prices[["Scenario1"]] <- prices("Scenario1.gdx",crops=c("tece","maiz")) prices[["Scenario2"]] <- prices("Scenario2.gdx",crops=c("tece","maiz")) magpie2ggplot2(prices,ylab="US$/ton DM",title="Agricultural prices") ## End(Not run)
## Not run: crop_area_reg <- list() crop_area_reg[["scenario_name"]] <- croparea("fulldata.gdx") magpie2ggplot2(crop_area_reg,ylab="10^6 ha",title="Croparea",stack=T,facet_x="Scenario",color=NULL) ## End(Not run) ## Not run: prices <- list() prices[["Scenario1"]] <- prices("Scenario1.gdx",crops=c("tece","maiz")) prices[["Scenario2"]] <- prices("Scenario2.gdx",crops=c("tece","maiz")) magpie2ggplot2(prices,ylab="US$/ton DM",title="Agricultural prices") ## End(Not run)
Returns the Resolution of a MAgPIE object
magpieResolution(object)
magpieResolution(object)
object |
An MAgPIE object |
"glo", "reg" or "cell"
Benjamin Bodirsky
Nice Color Schemes
nice_colors(style="contrast_area",saturation=1,alpha=1,value=1)
nice_colors(style="contrast_area",saturation=1,alpha=1,value=1)
style |
pre-defined Color-Scheme. "contrast_area" returns partial-complementary colors, with reduced saturation with rising number of colors. This is useful for area-diagramms, where the focus of the eye shall be forced to the bottom of the diagramm. |
saturation |
saturation (0-1) |
alpha |
Transparency (Attention, there are problems with certain graphic devices or printers! |
value |
Brightness. If brightness is part of the color-scheme, value is a reduction factor of existing brightness. |
Vector of Hexa-Format of colors.
Benjamin Bodirsky
## Not run: pie(1:12,col=nice_colors()) ## End(Not run)
## Not run: pie(1:12,col=nice_colors()) ## End(Not run)
Plots 2D density plots to evaluate the relationship between two datasets. It also returns the R-square for the correlation
plotCorrHist2D( x, y, title = NULL, xlab = "x", ylab = "y", bins = 40, limx = NULL, limy = NULL, folder = NULL, file = "", breaks = waiver(), nrows = 2, ncols = 2, axisFont = 13, axisTitleFont = 13, TitleFontSize = 15, legendTitleFont = 12, legendTextFont = 10, statFont = 4, table = FALSE, stat = TRUE, palette = "RdYlBu", tag = NULL )
plotCorrHist2D( x, y, title = NULL, xlab = "x", ylab = "y", bins = 40, limx = NULL, limy = NULL, folder = NULL, file = "", breaks = waiver(), nrows = 2, ncols = 2, axisFont = 13, axisTitleFont = 13, TitleFontSize = 15, legendTitleFont = 12, legendTextFont = 10, statFont = 4, table = FALSE, stat = TRUE, palette = "RdYlBu", tag = NULL )
x |
First data set (x axis) (observed) as magpie object with one or more items in 3rd dimension |
y |
Second data set (y axis) (predicted) as magpie object with one or more items in 3rd dimension |
title |
title of plot |
xlab |
x axis title |
ylab |
y axis title |
bins |
number of bins in histogram |
limx |
limits y axis (if NULL, fitting limits are calculated within the function) |
limy |
limits x axis (if NULL, fitting limits are calculated within the function) |
folder |
path in which to save the plots. if "." is used, it is saved in the current working directory. If NULL, no plots are saved. |
file |
name of file |
breaks |
breaks of the legend. It can be a vector, waiver()=the ones from the transformation, NULL for no breaks |
nrows |
number of rows in pdf file where plots are printed |
ncols |
number of columns in pdf file where plots are printed |
axisFont |
Font size of text of axis of the correlation plot |
axisTitleFont |
Font size of title of axis of the correlation plot |
TitleFontSize |
Font size of title of correlation plot |
legendTitleFont |
Font size of the title of the legend |
legendTextFont |
Font size of legend |
statFont |
font size r2-MAE label |
table |
Conditional to include table with statistics in the output. TRUE (includes it), FALSE (it doesn't) |
stat |
Conditional to include R2 and MAE on the fiure. TRUE (includes it), FALSE (it doesn't) |
palette |
palette selection for heatd maps based on the RColorBrewer library |
tag |
for multiple items in the second and third dimensions of the magpie object, should the title include "year", "item", "year-item". |
Edna Molina Bacca
## Not run: x <- plotCorrHist2D(x, y, folder = ".") ## End(Not run)
## Not run: x <- plotCorrHist2D(x, y, folder = ".") ## End(Not run)
Plots maps of map objects or MAgPIE objects
plotcountrymap(x, hatching=FALSE, ...)
plotcountrymap(x, hatching=FALSE, ...)
x |
a magpie object with ISO3 country names, one year and one name dimension |
hatching |
if hatching is activated, the second name column will be used for hatching (stripes) |
... |
Further attributes which are passed on to the function mapCountryData of the package rworldmap |
This function is an easy application of the mapCountryData function for ISO3 country-level magpie objects
Benjamin Leon Bodirsky
## Not run: data(population_magpie) test<-population_magpie dimnames(test)[[1]]<-c("AFG","DEU","FRA","EGY","IND","IDN","RUS","CHN","USA","YEM") plotcountrymap(test[,"y2005",1]) ## End(Not run)
## Not run: data(population_magpie) test<-population_magpie dimnames(test)[[1]]<-c("AFG","DEU","FRA","EGY","IND","IDN","RUS","CHN","USA","YEM") plotcountrymap(test[,"y2005",1]) ## End(Not run)
Plots maps MAgPIE objects
plotmap2(data,file=NULL,title="World map",legend_range=NULL, legendname="Cell share",lowcol="grey95",midcol="orange", highcol="darkred",midpoint=0.5, facet_grid="Year~Data1", nrow=NULL, ncol=NULL, scale=2,breaks=TRUE,labs=TRUE,borders=TRUE,MAgPIE_regions=FALSE, axis_text_col="black",legend_discrete=FALSE,legend_breaks=NULL, show_percent=FALSE, sea=TRUE,land_colour="white", legend_height=2,legend_width=NULL,text_size=12, legend_position="right",facet_style="default",plot_height=10,plot_width=20)
plotmap2(data,file=NULL,title="World map",legend_range=NULL, legendname="Cell share",lowcol="grey95",midcol="orange", highcol="darkred",midpoint=0.5, facet_grid="Year~Data1", nrow=NULL, ncol=NULL, scale=2,breaks=TRUE,labs=TRUE,borders=TRUE,MAgPIE_regions=FALSE, axis_text_col="black",legend_discrete=FALSE,legend_breaks=NULL, show_percent=FALSE, sea=TRUE,land_colour="white", legend_height=2,legend_width=NULL,text_size=12, legend_position="right",facet_style="default",plot_height=10,plot_width=20)
data |
MAgPIE object |
file |
File name the output should be written to using ggsave |
title |
Title of the map |
legend_range |
Legend range. Vector with minimum and maximum. |
legendname |
Name of the legend |
lowcol |
color for low values |
midcol |
color for medium values |
highcol |
color for high values |
midpoint |
Value indicating where the transformation from lowcol to highcol takes place. |
facet_grid |
facets formula used in ggplot2 with default "Year~Data1". Falls back to facet_wrap for "Data1". |
nrow |
number rows for facet_wrap |
ncol |
number columns for facet_wrap |
scale |
scaling of ggplot2 object before saving to file |
breaks |
TRUE or FALSE |
labs |
TRUE or FALSE |
borders |
TRUE or FALSE |
MAgPIE_regions |
TRUE or FALSE, if TRUE data is ignored |
axis_text_col |
color of axis text and ticks; default value: "black" |
legend_discrete |
TRUE or FALSE, discrete or continous legend |
legend_breaks |
NULL (automatically) or vector with breaks |
show_percent |
TRUE or FALSE, percent values for discrete lengeds |
sea |
TRUE or FALSE, blue sea or just white background |
land_colour |
Background colour for all land area. Defaults to white. |
legend_height |
NULL or legend height in cm |
legend_width |
NULL or legend width in cm |
text_size |
text size of axis, legend and title |
legend_position |
right (default), left, top, bottom or none |
facet_style |
style of facets, default or paper |
plot_height |
plot height in cm |
plot_width |
plot width in cm |
Makes use of ggplot2 map plotting capabilites
Florian Humpenoeder, David M Chen
# plotmap2(data) #' #@importFrom RColorBrewer
# plotmap2(data) #' #@importFrom RColorBrewer
This function plots a world region map directly from .csv files
plotRegionMapping(file, col = NULL, ...)
plotRegionMapping(file, col = NULL, ...)
file |
a .csv file |
col |
color |
... |
Further attributes such as color palette and map name |
Jan Philipp Dietrich, Ewerton Araujo
## Not run: plotRegionMapping("../regionmapping.csv", col = NULL, mapTitle = "") ## End(Not run)
## Not run: plotRegionMapping("../regionmapping.csv", col = NULL, mapTitle = "") ## End(Not run)
Plots world map showing world regions and cluster.
plotregionscluster(x, cells = "magpiecell")
plotregionscluster(x, cells = "magpiecell")
x |
data frame with 59199 or 67420 cells in MAgPIE order
that contains regional and cluster information.
For 59199 cells: format of cluster dimension |
cells |
"magpiecell" for 59199 cells and "lpjcell" for 67420 cells |
x <- paste(rep(paste0("REG", 1:5), each = 12000), rep(1:25, each = 2400), sep = ".")[1:59199] plotregionscluster(x)
x <- paste(rep(paste0("REG", 1:5), each = 12000), rep(1:25, each = 2400), sep = ".")[1:59199] plotregionscluster(x)
Function that returns several efficiency indices of model performance wrt observed data
qualityMeasure(pd, od, wt, measures=c("Willmott", "Nash Sutcliffe"),p_value=FALSE)
qualityMeasure(pd, od, wt, measures=c("Willmott", "Nash Sutcliffe"),p_value=FALSE)
pd |
Predicted data. Format required: numeric vector. |
od |
Observed data. Must be the same format and length as |
wt |
A vector of weights. The same length as |
measures |
A vector of supported statistical measures. Currently available are: "Willmott", "Willmott refined", "Nash Sutcliffe", "RMSE", "MAE", "Pearson","Kendall","Spearman". |
p_value |
p_value=TRUE,reports significance level of Pearson, Kendall and Spearmann coefficients. |
Returns a numeric vector with calculated measures. Names of vector elements are the measures applied.
Misko Stevanovic,Xiaoxi Wang
## Not run: od <- rnorm(1000) pd <- rnorm(1000) qualityMeasure(pd,od) qualityMeasure(pd,od,measures=c("RMSE","Pearson","Willmott refined")) ## End(Not run)
## Not run: od <- rnorm(1000) pd <- rnorm(1000) qualityMeasure(pd,od) qualityMeasure(pd,od,measures=c("RMSE","Pearson","Willmott refined")) ## End(Not run)
For a quick translation of hexadecimal color codes into visible colors this function simply creates a bar plot with the hexadecimal colors specified by the user. It takes a vector of strings containing the hexadecimal color codes, e.g. "#D0DD1E".
showcolors(...)
showcolors(...)
... |
One ore more strings or a vector of strings containing hexadecimal color codes. |
David Klein
## Not run: showcolors("#D0DD1E") ## Not run: showcolors("#beefee") ## Not run: showcolors(c("#beefee","#D0DD1E"),"#FFFFFF")
## Not run: showcolors("#D0DD1E") ## Not run: showcolors("#beefee") ## Not run: showcolors(c("#beefee","#D0DD1E"),"#FFFFFF")
Creates LaTeX code for plot (magpie2ggplot2
) and data
table (print.xtable
) based on MAgPIE objects and adds
it to a "swStream"
object.
swoutput(stream,data,unit="unit",plot=TRUE,table=TRUE,scenarioName="default", textSize=16,digits=0,plotLevel=NULL,...)
swoutput(stream,data,unit="unit",plot=TRUE,table=TRUE,scenarioName="default", textSize=16,digits=0,plotLevel=NULL,...)
stream |
The |
data |
MAgPIE object or list of MAgPIE objects. For a list of MAgPIE objects the name of the list entry (has to be character) is used as scenario name. |
unit |
unit of data (Character). Used as ylab in
|
plot |
TRUE or FALSE. If TRUE, LaTeX code for plot
( |
table |
TRUE or FALSE. If TRUE, LaTeX code for data table
( |
scenarioName |
Name of the scenario. Only used if data is not a list. |
textSize |
Size of text used in |
digits |
Number of digits for rounding. Used in
|
plotLevel |
NULL for all (default), reg or glo |
... |
Further options passed to |
Creates preformatted plots and data tables based on MAgPIE objects. Format is optimized for readability. Data tables with more than 12 columns are rescaled for fitting on portrait pages.
No return value
Florian Humpenoeder
"swStream"
,swopen
,swclose
,swR
,swtable
,swfigure
## Not run: sw<-swopen("croparea_reg.pdf") swlatex(sw,"\newpage") swlatex(sw,"\section{Croparea - regional}") swoutput(sw,croparea(gdx),"mio. ha",scenario="test") swclose(sw) ## End(Not run)
## Not run: sw<-swopen("croparea_reg.pdf") swlatex(sw,"\newpage") swlatex(sw,"\section{Croparea - regional}") swoutput(sw,croparea(gdx),"mio. ha",scenario="test") swclose(sw) ## End(Not run)
Plots the results of a logical question on a mpa
whereplot(x)
whereplot(x)
x |
A logical statement with a magpie object on country resolution |
A map. Green is true, red is false, orange is true and false in the same country, purple is NA, and striped indicates a country that includes some NAs.
Benjamin Leon Bodirsky
## Not run: data(population_magpie) test<-population_magpie dimnames(test)[[1]]<-c("AFG","DEU","FRA","EGY","IND","IDN","RUS","CHN","USA","YEM") whereplot(test>500) ## End(Not run)
## Not run: data(population_magpie) test<-population_magpie dimnames(test)[[1]]<-c("AFG","DEU","FRA","EGY","IND","IDN","RUS","CHN","USA","YEM") whereplot(test>500) ## End(Not run)
A shapefile dataframe containing up to date countriy borders (only used internally by plotmap). The file is from the data provided in the maptools package
Miodrag Stevanovic
A dataframe containing up to date country borders and MAgPIE region mapping (only used internally by plotmap2). The file is based on the wrld_simpl dataset
Miodrag Stevanovic, Florian Humpenoeder