2015-05-20 39 views
19

Pracuję nad rejestrowaniem wizualizacji niektórych danych przestrzennych za pomocą Rastra i RMarkdown, ale mam problem z tym, że nad każdą figurą jest mnóstwo negatywnej przestrzeni. Oto kod RMarkdown (nieco uproszczonej):Po wątku HTML - RMarkdown z blokiem białej przestrzeni

```{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, [email protected]) 
##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, [email protected]) 
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) 
``` 

Wszystko działa poprawnie, ale kiedy Przecena jest wyjście do HTML, banda białej przestrzeni jest również uwzględnione. [Tutaj jest opublikowany RPub] (teraz rozwiązany). (http://rpubs.com/pbwilliams/80167). Myślę, że jest to problem rastrowy, ponieważ nie miałem tego problemu z liczbami, na przykład w ggplot.

Udało mi się to skorygować tymczasowo, zmniejszając obraz, ale za każdym razem, gdy powiększam obraz do rozsądku, dodaje się dodatkowe miejsce. Jeśli ktoś wie, jak to naprawić, byłoby to bardzo cenne.

+4

Nie znam jeszcze głównej przyczyny, ale domyślam się, że użycie opcji fragmentu 'fig.keep = 'last'' powinno rozwiązać ten konkretny problem, ponieważ każdy fragment kodu wydaje się mieć dwie wątki, a pierwsza jest pusty (chcesz zatrzymać tylko ostatni). –

+1

@PatrickWilliams Warto podać komentarz Yihui jako rozwiązanie, a następnie zaakceptować. W przeciwnym razie wygląda na to, że pytanie to pozostaje bez odpowiedzi podczas wyszukiwania w StackOverflow. –

+0

@MikeWilliamson dzięki. Nie wiedziałem, że mogę to zrobić. –

Odpowiedz

1

Zgodnie z sugestiami w komentarzach, użycie opcji porcji fig.keep = 'last' powinno naprawić ten konkretny problem, ponieważ każdy fragment kodu wydaje się mieć dwie strony, a pierwsza jest pusta (chcesz zachować tylko ostatnią).