R spplot()如何更改比例尺的单位类型

时间:2015-01-14 01:15:26

标签: r dictionary sp

我使用spplot()(包sp)

绘制了一个基本地图

比例尺图例位于0到1之间的小数位,但实际上我希望它显示百分比。

如果我将Plot()函数用于简单图形,我可以通过手动添加它来更改比例。 在spplot中是否有相同的方法可以手动定义单位类型?

示例:

library(sp)
library(lattice)
trellis.par.set(sp.theme()) # sets bpy.colors() ramp
data(meuse)
coordinates(meuse) <- ~x+y
spplot(meuse, "ffreq")

该图显示1,2,3为传说。如果假设我想把它显示为$ 1,$ 2,$ 3?

,该怎么办?

3 个答案:

答案 0 :(得分:3)

legendEntries参数(showcased here)可让您为spplot()图例提供文字标签的字符向量。像这样使用它:

spplot(meuse, "ffreq", legendEntries = paste0("$", levels(meuse$ffreq)))

enter image description here

答案 1 :(得分:1)

如果您绘制因子,只需更改因子的标签可能会更容易:

levels(meuse$ffreq) = c("a", "b", "c")
spplot(meuse, "ffreq")
记录了

legendEntries,但它不是spplot的命名参数,因此缺少参数列表。 spplot对象的SpatialPointsDataFrame方法有一个colorkey参数来绘制连续的颜色键;即将发布的sp 1.0-18将允许它的列表参数来控制lattice::levelplot

中的相同参数

答案 2 :(得分:0)

sp :: spplot的帮助页面说明这是使用晶格函数完成的,并进一步表明可以以与xyplot相同的方式将参数传递给scale参数。但是,这不太可能影响图例,而是更改x和y轴的注释。当我在帮助页面中运行第一个示例时,我得到一个从0到500的scale.bar,只有这两个值作为标签。查看使用的代码可以推断出&#39; scale.bar&#39;正在使用传递给sp.layout的参数构建,在本例中为list(l2,l3,l4,l5)。经过几次deadend尝试后,我想出了如何使用格子simpleKey函数来提供图例修改并按照第一个示例制作比例尺的建议:

library(sp); library(lattice)
l2 = list("SpatialPolygonsRescale", layout.north.arrow(), offset = c(181300,329800), 
    scale = 400)
l3 = list("SpatialPolygonsRescale", layout.scale.bar(), offset = c(180500,329800), 
    scale = 500, fill=c("transparent","black"))
l4 = list("sp.text", c(180500,329900), "0")
l5 = list("sp.text", c(181000,329900), "500 m")

spplot(meuse, c("ffreq"), sp.layout=list(l2,l3,l4,l5) 
              ,key=simpleKey( text=paste0("$", 1:3) ) )

注意:由于spplot是S4函数,因此您可以使用以下代码:

showMethods(spplot, class="SpatialPointsDataFrame", includeDefs=TRUE)