我一直在使用 Raster 和 RMarkdown 记录一些空间数据的可视化过程,但是每个图像上方都有很多负空间,这让我感到困扰。以下是 RMarkdown 代码(有点简化):
```{r global_options, include=FALSE}
knitr::opts_chunk$set(fig.width=12, fig.height=8, echo=FALSE,
warning=FALSE, message=FALSE)
```
```{r r-packages}
library(maptools)
library(raster)
library(rgdal)
```
###Description of data
Data are taken from the National Land Cover Database - 2011 and represent land cover at a 30m X 30m resolution.
location of data: [National Land Cover Database - 2011]('http://gisdata.usgs.gov/TDDS/DownloadFile.php?TYPE=nlcd2006&FNAME=nlcd_2006_landcover_2011_edition_2014_10_10.zip')
###Import raster file for US landcover and shapefile for state borders and counties
```{r Import raster file for us landcover}
rfile <- '~/Documents/Data/nlcd_2006_landcover_2011_edition_2014_10_10/nlcd_2006_landcover_2011_edition_2014_10_10.img' #location of raster data
r1 <- raster(rfile)
##Import shapefile for state borders
statepath <- '~/Documents/Data/'
setwd(statepath)
shp1 <- readOGR(".", "states")
##Transform shapefile to fit raster projection
shp1 <- spTransform(shp1, r1@crs)
##Remove hawaii and alasks which are not in raster image
shp1.sub <- c("Hawaii","Alaska")
states.sub <- shp1[!as.character(shp1$STATE_NAME) %in% shp1.sub, ]
##Import county data
#data source: ftp://ftp2.census.gov/geo/tiger/TIGER2011/COUNTY/tl_2011_us_county.zip
countypath <- '~/Documents/Data/tl_2011_us_county'
setwd(countypath)
shp2 <- readOGR(".", "tl_2011_us_county")
##Transform shapefile to fit raster projection
counties <- spTransform(shp2, r1@crs)
counties.sub <- counties[as.character(counties$STATEFP) %in% states.sub$STATE_FIPS, ]
```
Raster plot of US with state and county border overlays
```{r plot landcover with state borders}
#Plot state borders over raster
plot(r1)
plot(counties.sub, border = "darkgrey",lwd=.65,add=T)
plot(states.sub,border = "darkblue",add=T)
```
Raster cropped and masked to extent of California
```{r crop raster to a single state (California)}
shp.sub <- c("California")
shp.ca <- states.sub[as.character(states.sub$STATE_NAME) %in% shp.sub, ]
r1.crop <- crop(r1, extent(shp.ca))
plot(r1)
```
一切都运行正常,但是当Markdown输出到HTML时,也会包括一堆空白。[这里是已发布的RPub] (现在已解决)。(http://rpubs.com/pbwilliams/80167)。我认为这是一个光栅问题,因为我在ggplot中的图形等方面没有遇到这个问题。
我已经通过缩小图像来暂时解决了这个问题,但是每次我将图片放大到任何合理大小时,额外的空间就会增加。如果有人知道如何解决这个问题,那将不胜感激。
fig.keep = 'last'
可以解决这个特定的问题,因为每个代码块似乎都有两个图表,而第一个是空白的(你只想保留最后一个)。 - Yihui Xie