gpt4 book ai didi

r - 如何在 R 中添加比例尺?

转载 作者:行者123 更新时间:2023-12-02 04:30:09 25 4
gpt4 key购买 nike

假设我想要一个图并在 R 中丢失框。但我仍然需要一个比例尺,以便人们可以理解比例。我没有找到解决方案。

plot(1,1, type="n", xlim=c(0,5), ylim=c(0,5))

当我使用 raster 包中的 scalebar 函数时,缩放比例不正确:

require(raster)
scalebar(1)

添加的比例尺太短,无法在 x 轴上表示 1。我试图找到其他东西,但大多数比例尺功能都与 map 有关。

编辑:所以我想要的是这样的:

plot(1,1, type="n", xlim=c(0,5), ylim=c(0,5)
, yaxt="n",
xaxt="n", frame.plot=F, ann=F
# adding a blank plot without the axes
)

#adding some simple function
x=c(1:5)
y=x*x
lines(x=x, y=y)

#defining where the scale bar should appear
lines(x=c(4,5), y=c(5,5))

#placing the text right under the line
text(x=4.5, y=5, pos=1, label="1 km")

有没有更简单的方法来做这样的事情?

最佳答案

可能有一个函数可以满足您的需求,但您也可以创建自己的函数,希望它能提供足够好的服务。请参阅下面的一种可能性。您当然可以调整功能设置以获得您想要的定位。特别是,我将 yadj<​​ 作为函数的参数,默认值为 1.5。如果比例尺标签未正确定位在比例线下方,您可以更改此设置。

如果 x 轴跨越的范围大于下面使用的值,您需要调整刻度线的 x 坐标,使其跨越 10、100 等 x 单位,视情况而定是。如果您想花哨一些,您可以让函数本身根据绘图的 x 范围确定要跨越多少个 x 单位,然后在单位标签中使用该跨度的大小。

# Function to add a scalebar to a base-graphics plot
myScalebar = function(units_label, yadj=1.5) {

# Get plot coordinates
pc = par("usr")

# Position scale line between last two major x-axis tick marks
# and 1/10th of the total y-range above the lower y-axis coordinate
lines(c(floor(pc[2]-1),floor(pc[2])),
rep(pc[3] + 0.1*(pc[4] - pc[3]), 2))

# Place the units label at the midpoint of and just below the scale line
text(x=mean(c(floor(pc[2]-1), floor(pc[2]))),
y=pc[3] + 0.1*(pc[4] - pc[3]),
label=units_label, adj=c(0.5, yadj))
}

# Now redo your plot
# Start with blank plot
plot(1,1, type="n", xlim=c(0,5), ylim=c(0,5),
yaxt="n", xaxt="n", frame.plot=F, ann=F)

# Add a simple function
x=c(1:5)
y=x*x
lines(x=x, y=y)

# Add scalebar
myScalebar("1 km")

enter image description here

关于r - 如何在 R 中添加比例尺?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23784943/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com