【问题标题】:How to make a regular label in levelplot (lattice) with non-regular numbers?如何使用非常规数字在 levelplot(晶格)中制作常规标签?
【发布时间】:2019-11-09 01:17:52
【问题描述】:

我需要用包点阵制作气象图。但是我在命令 levelplot() 中发现了一个问题。我可以使用常规标签使用命令制作地图。例如:标签为 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:

但是,我需要制作具有非常规值的地图。 E.g: 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

请注意,地图的标签非常奇怪且不规则。

所以。我该如何解决这个问题?我会感谢你的帮助。

【问题讨论】:

  • 欢迎来到 Stack Overflow。请分享一些玩具数据,以便我们重现您的问题

标签: r maps label lattice levelplot


【解决方案1】:

您需要指定自定义颜色键。为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)

【讨论】:

    猜你喜欢
    • 2013-10-26
    • 2023-02-25
    • 2018-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多