r - geom_text - ggplot legend
Problema de leyenda ggplot con geom_point y geom_text (2)
Esto me pasó todo el tiempo. El truco es saber que aes()
mapea los datos a la estética. Si no hay datos para asignar (por ejemplo, si tiene un solo valor que determine), no hay razón para usar aes()
. Creo que solo las cosas dentro de un aes()
aparecerán en tu leyenda.
Además, cuando especifica las asignaciones dentro de ggplot(aes())
, esas asignaciones se aplican a cada capa subsiguiente . Eso es bueno para tu xey, ya que tanto geom_point
como geom_text
usan. Eso es malo para size = count
, ya que solo se aplica a los puntos.
Así que estas son mis dos reglas para prevenir este tipo de cosas:
- Solo coloque asignaciones basadas en datos dentro de
aes()
. Si el argumento está tomando un solo valor predeterminado, páselo a la capa fuera deaes()
. - Mapear datos solo para aquellas capas que lo usaran . Corolario: solo
ggplot(aes())
datos dentro deggplot(aes())
si está seguro de que cada capa subsiguiente lo usará. De lo contrario, asignarlo en el nivel de capa.
Así que trazar esto así:
p <- ggplot(data = df, aes(x = x, y = y)) + geom_point(aes(size = count))
p + geom_text(aes(label = label), size = 4, vjust = 2)
Estoy tratando de usar geom_point
para ilustrar el recuento de mis datos. También me gustaría anotar algunos de los puntos en mi gráfico con geom_text
. Cuando agrego la llamada a geom_text
, parece que está trazando algo debajo de los puntos en la leyenda. He intentado invertir el orden de las capas en vano. No puedo entender por qué está haciendo esto. ¿Alguien ha visto esto antes?
set.seed(42)
df <- data.frame(x = 1:10
, y = 1:10
, label = sample(LETTERS,10, replace = TRUE)
, count = sample(1:300, 10, replace = FALSE)
)
p <- ggplot(data = df, aes(x = x, y = y, size = count)) + geom_point()
p + geom_text(aes(label = label, size = 150, vjust = 2))
o, si necesita especificar el tamaño del texto dentro de aes, entonces legend = FALSE suprime el dibujo de las leyendas del geom:
p <- ggplot(data = df, aes(x = x, y = y, size = count)) + geom_point()
p + geom_text(aes(label = label, size = 150, vjust = 2), show_guide = FALSE)