簡體   English   中英

如何在水平圖(晶格)中使用非常規數字制作常規標簽?

[英]How to make a regular label in levelplot (lattice) with non-regular numbers?

我需要用包裝格子制作氣象圖。 但是我在comand levelplot()中發現了一個問題。 我可以使用常規標簽使用comand制作地圖。 例如:標簽為0、0.1、0.15、0.2、0.25、0.3、0.35 0.4 ...的相關圖在此示例中,標簽跳過了五乘五(圖1)。

h1<- levelplot(var~x*y,data = idw.msk.dfr,contour=F,at=seq(0,0.5,0.05),
           par.settings = paleta1,main = "correlation map",
           xlab = NULL, ylab = NULL, ylim = c(-60,15), xlim = c(-90,-30))

圖1:

圖1

但是,我需要使用非常規值制作地圖。 例如:0、0.1、0.15、0.2、0.22、0.25、0.40 ...將這些值放入代碼中時,我得到以下結果(圖2):

h1<- levelplot(var~x*y,data = idw.msk.dfr,contour=F,at=c(0,0.1,0.15,0.2,0.22,0.25,0.4,0.5),
           par.settings = paleta1,main = "correlation map",
           xlab = NULL, ylab = NULL, ylim = c(-60,15), xlim = c(-90,-30))

圖2 圖2

請注意,地圖的標簽非常奇怪且不規則。

所以。 我該如何解決這個問題? 我會感謝您的幫助。

您需要指定自定義色鍵。 將colorkey添加到levelplot函數。

x <- seq(pi/4, 5 * pi, length = 100)
y <- seq(pi/4, 5 * pi, length = 100)
r <- as.vector(sqrt(outer(x^2, y^2, "+")))
grid <- expand.grid(x=x, y=y)
grid$z <- cos(r^2) * exp(-r/(pi^3))

breaks <- c(0, 0.1, 0.15, 0.2, 0.22, 0.25, 0.4, 0.5)

levelplot(z~x*y, grid, at=breaks)

在此處輸入圖片說明

myColorkey=list(at=breaks, labels=list(at=breaks, labels=breaks))

levelplot(z~x*y, grid, colorkey=myColorkey)

在此處輸入圖片說明

要使間隔具有相同的大小,請更改at參數:

ats=seq(0, 0.5, by=0.07)
myColorkey=list(at=ats, labels=list(at=ats, labels=breaks))
levelplot(z~x*y, grid, colorkey=myColorkey)

在此處輸入圖片說明

暫無
暫無

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

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