es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

st_centroid renderiza todas las etiquetas en el mismo punto.

Estoy tratando de mostrar etiquetas en las características poligonales GIS en R utilizando la función st_centroid de la biblioteca sf. Desafortunadamente, aunque la función head() parece mostrar que cada polígono tiene diferentes coordenadas x e y asociadas con él, todas las etiquetas se representan superpuestas en un solo punto en el mapa (que aparentemente es el centroide de un polígono en particular). ¿Qué estoy haciendo mal aquí?

Configuración actual del código:

biblioteca(“ggplot2”)
biblioteca(“sf”)

sf::sf_use_s2(FALSE) #evita que los centroides se rompan

mundo <- st_read(“C:/prgrm/gis/source/10m_land_and_islands.shp”)
prov <- st_read(“C:/prgrm/gis/edited ncm/ncm_provinces.shp”)
prov <- cbind(prov, st_coordinates(st_centroid(prov))) #adjunta los centroides al conjunto de datos ‘prov’

head(prov)

ggplot(data = mundo) +
geom_sf() +
geom_sf(data=prov, aes(fill=”blue”)) +
geom_text(data=prov, aes(X,Y, label=provname_r), size=5) +
coord_sf(xlim=c(-2000000,1000000),ylim=c(-1500000, 3000000), crs=st_crs(3310))

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema pudo haber sido con la llamada de la función geom_text. Necesitas usar la función st_coordinates para extraer las coordenadas x e y del centroide y usarlas en el argumento aes de geom_text, en lugar de X e Y. Actualiza tu código al siguiente:

    ggplot(data = world) + 
      geom_sf() + 
      geom_sf(data=prov, aes(fill="blue")) +
      geom_text(data=prov, aes(x = st_coordinates(prov)[,1], y = st_coordinates(prov)[,2], label = provname_r), size=5) +
      coord_sf(xlim=c(-2000000,1000000),ylim=c(-1500000, 3000000), crs=st_crs(3310))
    

    Esto debería plotear correctamente las etiquetas en los centroides de cada polígono.

Comments are closed.