ggplot2 结合 rworldmap
ggplot2 in combination with rworldmap
我做了以下 rworldplot
:
library(rworldmap)
#> Loading required package: sp
#> ### Welcome to rworldmap ###
#> For a short introduction type : vignette('rworldmap')
library(RColorBrewer)
test.data <- data.frame(
country = c('USA','Denmark','Australia','Germany'),
value = c(4000,1000,2300,100)
)
sPDF <- joinCountryData2Map(test.data,joinCode = "NAME",nameJoinColumn = "country")
#> 4 codes from your data successfully matched countries in the map
#> 0 codes from your data failed to match with a country code in the map
#> 239 codes from the map weren't represented in your data
colourPalette <- brewer.pal(4,'Reds')
mapParams <- mapCountryData(sPDF, nameColumnToPlot="value", colourPalette=colourPalette, catMethod=c(0,500,1000,2300,5000), addLegend=FALSE, mapTitle = 'TEST')
do.call( addMapLegend, c( mapParams
, legendLabels="all"
, legendWidth=0.5 ))
为了清楚起见,我还想添加一个条形图:
library(ggplot2)
barplot <- ggplot(test.data, aes(x=reorder(country,-value), y = value)) +
geom_bar(stat='identity', fill = 'darkred') +
theme_classic()
barplot
理想情况下,我想将 rworldmap 图和 ggplot 结合在一个图中,例如使用grid.arrange
或 cowplot
包。我知道这对于不同的 ggplot
对象来说很容易,但是 do.call
直接绘制了 rworldmap,因此我不知道如何将它写成 grid.arrange(<rworlddmapplot>, barplot)
这样的词。
cowplot 中的 plot_grid()
函数可以采用绘制您想要显示的图的函数参数。
library(rworldmap)
#> Loading required package: sp
#> ### Welcome to rworldmap ###
#> For a short introduction type : vignette('rworldmap')
library(RColorBrewer)
test.data <- data.frame(
country = c('USA','Denmark','Australia','Germany'),
value = c(4000,1000,2300,100)
)
draw_map <- function(test.data) {
function() {
sPDF <- joinCountryData2Map(test.data,joinCode = "NAME",nameJoinColumn = "country")
colourPalette <- brewer.pal(4,'Reds')
mapParams <- mapCountryData(sPDF, nameColumnToPlot="value", colourPalette=colourPalette, catMethod=c(0,500,1000,2300,5000), addLegend=FALSE, mapTitle = 'TEST')
do.call( addMapLegend, c( mapParams
, legendLabels="all"
, legendWidth=0.5 ))
}
}
library(ggplot2)
barplot <- ggplot(test.data, aes(x=reorder(country,-value), y = value)) +
geom_bar(stat='identity', fill = 'darkred') +
theme_classic()
library(cowplot)
#>
#> ********************************************************
#> Note: As of version 1.0.0, cowplot does not change the
#> default ggplot2 theme anymore. To recover the previous
#> behavior, execute:
#> theme_set(theme_cowplot())
#> ********************************************************
plot_grid(barplot, draw_map(test.data))
#> 4 codes from your data successfully matched countries in the map
#> 0 codes from your data failed to match with a country code in the map
#> 239 codes from the map weren't represented in your data
由 reprex package (v0.3.0)
于 2019-08-26 创建
我做了以下 rworldplot
:
library(rworldmap)
#> Loading required package: sp
#> ### Welcome to rworldmap ###
#> For a short introduction type : vignette('rworldmap')
library(RColorBrewer)
test.data <- data.frame(
country = c('USA','Denmark','Australia','Germany'),
value = c(4000,1000,2300,100)
)
sPDF <- joinCountryData2Map(test.data,joinCode = "NAME",nameJoinColumn = "country")
#> 4 codes from your data successfully matched countries in the map
#> 0 codes from your data failed to match with a country code in the map
#> 239 codes from the map weren't represented in your data
colourPalette <- brewer.pal(4,'Reds')
mapParams <- mapCountryData(sPDF, nameColumnToPlot="value", colourPalette=colourPalette, catMethod=c(0,500,1000,2300,5000), addLegend=FALSE, mapTitle = 'TEST')
do.call( addMapLegend, c( mapParams
, legendLabels="all"
, legendWidth=0.5 ))
为了清楚起见,我还想添加一个条形图:
library(ggplot2)
barplot <- ggplot(test.data, aes(x=reorder(country,-value), y = value)) +
geom_bar(stat='identity', fill = 'darkred') +
theme_classic()
barplot
理想情况下,我想将 rworldmap 图和 ggplot 结合在一个图中,例如使用grid.arrange
或 cowplot
包。我知道这对于不同的 ggplot
对象来说很容易,但是 do.call
直接绘制了 rworldmap,因此我不知道如何将它写成 grid.arrange(<rworlddmapplot>, barplot)
这样的词。
cowplot 中的 plot_grid()
函数可以采用绘制您想要显示的图的函数参数。
library(rworldmap)
#> Loading required package: sp
#> ### Welcome to rworldmap ###
#> For a short introduction type : vignette('rworldmap')
library(RColorBrewer)
test.data <- data.frame(
country = c('USA','Denmark','Australia','Germany'),
value = c(4000,1000,2300,100)
)
draw_map <- function(test.data) {
function() {
sPDF <- joinCountryData2Map(test.data,joinCode = "NAME",nameJoinColumn = "country")
colourPalette <- brewer.pal(4,'Reds')
mapParams <- mapCountryData(sPDF, nameColumnToPlot="value", colourPalette=colourPalette, catMethod=c(0,500,1000,2300,5000), addLegend=FALSE, mapTitle = 'TEST')
do.call( addMapLegend, c( mapParams
, legendLabels="all"
, legendWidth=0.5 ))
}
}
library(ggplot2)
barplot <- ggplot(test.data, aes(x=reorder(country,-value), y = value)) +
geom_bar(stat='identity', fill = 'darkred') +
theme_classic()
library(cowplot)
#>
#> ********************************************************
#> Note: As of version 1.0.0, cowplot does not change the
#> default ggplot2 theme anymore. To recover the previous
#> behavior, execute:
#> theme_set(theme_cowplot())
#> ********************************************************
plot_grid(barplot, draw_map(test.data))
#> 4 codes from your data successfully matched countries in the map
#> 0 codes from your data failed to match with a country code in the map
#> 239 codes from the map weren't represented in your data
由 reprex package (v0.3.0)
于 2019-08-26 创建