我想使用sf微调ggplot2中文本的x和y位置。可以在美学中修改文本的正当性,然后需要对裸露进行类似的修改,但是nudge_x和nudge_y不能用于美学中。

使用sp和强化的数据帧,我可以在美学上修改x和y(x =(x + hBump),y =(y + vBump)。我不知道这在SF中是否可行。

以下是一些数据:

Cities <- read.table( text=
  "City long    lat hJust   vJust   hBump   vBump
  GrandJunction -108.550649 39.063871   1   1   -1100   -1000
  Gunnison  -106.925321 38.545825   0   1   0   -1000
  Tincup    -106.47836  38.754439   1   0   0   800",
  header=TRUE )

转换为sf

Cities.sf <- st_as_sf(
  x = Cities,
  coords = c("long", "lat"),
  crs = "+proj=longlat +datum=WGS84"
)

ggplot(coord_sf只是为了让标签不脱落)

ggplot(Cities.sf) +
  geom_sf() +
  coord_sf(xlim = c(-109, -106.3), ylim = c(38.4, 39.2)) +
  geom_sf_text(aes(label = City, hjust = hJust, vjust = vJust))

r - 在geom_sf_text中,如何在美学上微调x和y?-LMLPHP

现在,如果我们轻推一个,其他人可能会陷入困境。
需要美感!
ggplot(Cities.sf) +
  geom_sf() +
  coord_sf(xlim = c(-109, -106.3), ylim = c(38.4, 39.2)) +
  geom_sf_text(
    aes(label = City, hjust = hJust, vjust = vJust),
    nudge_x = 0.025, nudge_y = -0.025
  )

r - 在geom_sf_text中,如何在美学上微调x和y?-LMLPHP
附带问题-我猜是否将对象转换为另一个crs
使用米,那么微移单位必须从度数更改为米?这就是hBump和vBump所在的单位。

最佳答案

据我所知,nudge_xnudge_y的矢量化输入已正确处理。

library(ggplot2)
library(sf)
#> Linking to GEOS 3.7.2, GDAL 2.4.2, PROJ 5.2.0

Cities <- read.table(text=
  "City long    lat hJust   vJust   hBump   vBump
  GrandJunction -108.550649 39.063871   1   1   -1100   -1000
  Gunnison  -106.925321 38.545825   0   1   0   -1000
  Tincup    -106.47836  38.754439   1   0   0   800",
  header=TRUE)

Cities.sf <- st_as_sf(x = Cities,
                      coords = c("long", "lat"),
                      crs = "+proj=longlat +datum=WGS84")

ggplot(Cities.sf) + geom_sf() +
  coord_sf(xlim = c(-109, -106.3), ylim = c(38.4, 39.2)) +
  geom_sf_text(
    aes(label = City, hjust = hJust, vjust = vJust),
    nudge_x = c(-0.025, 0.025, -0.05),
    nudge_y = c(-0.025, -0.025, 0)
  )
#> Warning in st_point_on_surface.sfc(sf::st_zm(x)): st_point_on_surface may
#> not give correct results for longitude/latitude data

reprex package(v0.3.0)创建于2020-01-01

关于r - 在geom_sf_text中,如何在美学上微调x和y?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59522531/

10-13 06:16