repel ggplot geom_text geom annotation r ggplot2 maps annotate geom-text

ggplot - Muestra el valor de un punto geom usando geom_text



r ggplot geom_text (2)

Prueba esto:

p <- ggplot() + geom_polygon(data=base_world, aes(x=long, y=lat, group=group)) + geom_line(data=link1, aes(x=Longitude, y=Latitude), color="blue", size=1) + geom_line(data=link2, aes(x=Longitude, y=Latitude), color="green", size=1) + geom_point(data=countries, aes(x=Longitude, y=Latitude), colour = "cyan", size=5, alpha=I(0.7)) + #set the color outside of `aes` theme(text = element_text(size=20), legend.position="none") + #remove the legend annotate("text", x = countries$Longitude, y=countries$Latitude, label = countries$Value, hjust = 2, colour = "purple") + annotate("text", x = countries$Longitude, y=countries$Latitude, label = countries$country, hjust = -0.1, colour = "red") #if you also want name of countries

Y esta sería la trama:

> p

PD Preferiría annotate sobre geom_text como una preferencia personal, pero si desea usar eso, los siguientes trabajos (deberían hacer referencia al marco de datos al definir las coordenadas):

p+geom_text(aes(label=countries$Value,x=countries$Longitude, y=countries$Latitude),hjust=0, vjust=0)

Es posible que desee considerar utilizar valores diferentes ya que los valores no serían legibles en negro.

Usando este lindo código desde aquí:

countries <- structure(list(country = structure(c(5L, 6L, 3L, 4L, 10L, 8L, 11L, 7L, 1L, 13L, 9L, 12L, 2L), .Label = c("Australia", "China", "France", "Georgia", "India", "Ireland", "Malaysia", "Poland", "Qatar", "Singapore", "South Africa", "Spain", "USA"), class = "factor"), Latitude = c(20.593684, 53.142367, 46.227638, 32.165622, 1.352083, 51.919438, -30.559482, 4.210484, -25.274398, 37.09024, 25.354826, 40.463667, 35.86166), Longitude = c(78.96288, -7.692054, 2.213749, -82.900075, 103.819836, 19.145136, 22.937506, 101.975766, 133.775136, -95.712891, 51.183884, -3.74922, 104.195397), Value = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 2L, 2L)), .Names = c("country", "Latitude", "Longitude", "Value"), class = "data.frame", row.names = c(NA, -13L)) link1 <- countries[countries$country %in% c("USA", "Spain","China"), ] link2 <- countries[countries$country %in% c("Australia", "Poland"), ] library(ggplot2) library(maps) base_world <- map_data("world") p <- ggplot() + geom_polygon(data=base_world, aes(x=long, y=lat, group=group)) + geom_line(data=link1, aes(x=Longitude, y=Latitude), color="red", size=1) + geom_line(data=link2, aes(x=Longitude, y=Latitude), color="green", size=1) + geom_point(data=countries, aes(x=Longitude, y=Latitude), colour = "cyan", size=5, alpha=I(0.7)) + #set the color outside of `aes` theme(text = element_text(size=20), legend.position="none") #remove the legend

Me gustaría mostrar junto al punto geom el valor. Así que probé el geom_text usando lo siguiente:

p+geom_text(aes(label=countries$Value,x=Longitude, y=Latitude),hjust=0, vjust=0)

pero recibo este error:

Error in eval(expr, envir, enclos) : object ''Longitude'' not found


Te estás perdiendo el parámetro de data en tu geom_text :

p + geom_text(data = countries, aes(label=Value, x=Longitude, y=Latitude), hjust=0, vjust=0)