簡體   English   中英

R spplot標簽重疊

[英]R spplot label overlapping

我正在處理的數據對於每個級別(東南5個州的每日降雨量)具有很多相同的值,例如:

values(r1) <- c(rep(0.1,25575),rep(0.2,25575),rep(0.3,25575),rep(0.3,25575)) 

因此,在輸出圖像中,映射對於每個級別都充滿了相同的標簽/值,是否存在這樣的方式,即每個級別僅將標簽顯示一次或兩次,例如:標簽0.1對於級別1僅顯示一次,而不是25575次?

這是一個測試代碼:

library(sp)
library(rgdal)
library(raster)
library(maptools)
setwd("C:/Users/rosaR/Data/PRISM")

r1 <- raster(xmn=-88.77083, xmx=-75.02083, ymn=24.0625,ymx=36.97917, nrow=310, ncol=330,crs='+proj=longlat +datum=NAD83 +no_defs +ellps=GRS80 +towgs84=0,0,0') 
#values(r1) <- c(rep(0.1,25575),rep(0.2,25575),rep(0.3,25575),rep(0.4,25575))   
values(r1) <- c(rep(seq(from=0.1,to=3,by=0.1),3410))
newproj <- "+proj=aea +lat_1=29.5 +lat_2=45.5 +lat_0=23 +lon_0=-96 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"
r1 <- projectRaster(r1, crs=newproj)

png(file=paste("test.png",sep=""), width=1350, height=700, units="px")
at=c(0,0.15,0.3,0.45,0.5,0.65,0.7,0.85,0.9,1.05,1.1,1.25,1.3,1.45,1.5,1.65,1.7,1.85,1.9,2.05,2.1,2.25,2.3,2.45,2.5,2.65,2.7,2.85,2.9,3)

spplot(r1,
#sp.layout=list(
#list('sp.polygons', spTransform(SE_sea1, CRS(newproj)),fill="white", first=F, col=NA), 
#list('sp.polygons', spTransform(SE1, CRS(newproj)), alpha=1, lwd=2, first=F)),
xlim=c(613190.6,2173441),ylim=c(121319.4,1774699),col.regions=rainbow(29),colorkey=F,at=at+.Machine$double.eps,contour=T,labels=list(labels=format(at)),col=grey.colors(1),maxpixels=102300)    
dev.off()

如果我將分界點設置為= c(0,0.15,0.25,0.35,0.5),地圖將看起來很完美,但是由於我的原始數據集非常龐大,並且不可避免地存在與級別值相同的值,可能不超過25575 ,但要20-100倍,我希望減少到圖像中顯示的少於5倍。

我試圖添加:1)method =“ flattest”; 2)list('sp.pointLabel',r1,label,col ='grey'); 3)list(“ sp.text”,坐標(raster_data),raster_data); 但似乎沒有一個適用於我的RasterLayer,

任何建議將不勝感激,謝謝!

您可以at值上添加.Machine$double.eps ,以便截止值僅會錯過at值。 然后,您可以使用labels參數調整顯示的標簽(這樣您將獲得“ 0.1”而不是“ 0.100000e + 02”)

spplotlabels參數傳遞給levelplot?sp...傳遞給levelplot (網格,多邊形)或xyplot (點),但是raster是“網格”類型的)。 閱讀?levelplot表示要查看?panel.levelplot以獲取有關labels參數的更多詳細信息。 最后, ?panel.levelplot說, labels可以是帶有元素“標簽”的列表,該元素描述放置在輪廓上的標簽。

所以結果是您的代碼,除了:

  • 調整at以添加.Machine$double.eps (少量)
  • 調整label ,使標簽為“好”數字。

贈送:

at <- c(0, 0.1, 0.15, 0.25, 0.35, 0.45)
spplot(r1, xlim=c(613190.6,2173441), ylim=c(121319.4,1774699), 
       col.regions=rainbow(4), colorkey=F, contour=T,
       # add a small number to the colour cutoffs to prevent ties
       at=at + .Machine$double.eps,
       # change the labels to be "pretty". See `?format`
       labels=list(labels=format(at)),
       col=grey.colors(1), maxpixels=102300)    

在此處輸入圖片說明

(顏色看起來很糟糕,但我認為您可以從這里修復它:P)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM