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)