Las leyendas de línea de GGPLOT2 aparecen "cruzadas" -- r campo con ggplot2 campo con graph campo con charts campo con legend camp Relacionados El problema

ggplot2's line legends appear “crossed-out”


0
vote

problema

Español

Estoy creando un GGPLOT con dos líneas, cada una de Geoms separados. Como ejemplo:

  df = data.frame(    x.v = seq(0, 1, 0.025),    y.v = runif(41) ) straight.line = data.frame(    Inter = c(0),    Slope = c(1) )  p = ggplot() +    geom_point(       mapping = aes(          x = x.v,          y = y.v       ),       data = df,       colour = "blue"    ) +    geom_smooth(       mapping = aes(          x = x.v,          y = y.v,          colour = "line of best fit"       ),       data = df,       method = "lm",       show.legend = NA    ) +    geom_abline(       mapping = aes(          intercept = Inter,          slope = Slope,          colour = "y = x"       ),       data = straight.line,      show.legend = NA    ) +    guides(       fill = "none",       linetype = "none",       shape = "none",       size = "none"    )   

Esto da la salida:

salida del código anterior

Como puede ver, la leyenda tiene líneas diagonales extrañas a través de ella. Una Responder a una pregunta similar dice que esto puede fijarse usando show.legend = NA . Sin embargo, como puede ver en el código anterior, hice esto y no cambió el resultado.

¿Alguien sabe qué está agregando las líneas diagonales en la leyenda y de qué otra manera puedo arreglarlo por favor? Gracias.

Editar: Una pregunta de si este es un duplicado de este . Esta puede ser la respuesta, pero ¿cómo aplico esto cuando la respuesta en el enlace usa llenado, y uso el color, por favor?

si lo intento

  + guides(colour = guide_legend(override.aes = list(colour = NULL)))   

obtengo el error

  Error in check.length("col") : 'gpar' element 'col' must not be length 0   

y si lo intento

  + guides(colour = guide_legend(override.aes = listfill = NULL)))   

obtengo el error

  Error in `$<-.data.frame`(`*tmp*`, "fill", value = character(0)) :    replacement has 0 rows, data has 1   
Original en ingles

I'm creating a ggplot with two lines, each from separate geoms. As an example:

df = data.frame(    x.v = seq(0, 1, 0.025),    y.v = runif(41) ) straight.line = data.frame(    Inter = c(0),    Slope = c(1) )  p = ggplot() +    geom_point(       mapping = aes(          x = x.v,          y = y.v       ),       data = df,       colour = "blue"    ) +    geom_smooth(       mapping = aes(          x = x.v,          y = y.v,          colour = "line of best fit"       ),       data = df,       method = "lm",       show.legend = NA    ) +    geom_abline(       mapping = aes(          intercept = Inter,          slope = Slope,          colour = "y = x"       ),       data = straight.line,      show.legend = NA    ) +    guides(       fill = "none",       linetype = "none",       shape = "none",       size = "none"    ) 

This gives the output:

Output of the above code

As you can see, the legend has weird diagonal lines through it. An answer to a similar question says this can be fixed by using show.legend = NA. However, as you can see in the code above, I did this and it did not change the result.

Does anybody know what is adding the diagonal lines in the legend and how else I can fix it please? Thanks.

EDIT: A question of if this is a duplicate of this. This may be the answer but how do I apply this when the answer in the link uses fill, and I use colour, please?

If I try

+ guides(colour = guide_legend(override.aes = list(colour = NULL))) 

I get the error

Error in check.length("col") : 'gpar' element 'col' must not be length 0 

and if I try

+ guides(colour = guide_legend(override.aes = listfill = NULL))) 

I get the error

Error in `$<-.data.frame`(`*tmp*`, "fill", value = character(0)) :    replacement has 0 rows, data has 1 
              
         
         

Lista de respuestas

3
 
vote
vote
La mejor respuesta
 

Las siguientes obras:

  library(ggplot2)  ggplot() +   geom_point(mapping = aes(x = x.v, y = y.v),              data = df, colour = "blue") +   geom_smooth(mapping = aes(x = x.v, y = y.v, colour = "line of best fit"),               data = df, method = "lm", show.legend = NA) +   geom_abline(mapping = aes(intercept = Inter, slope = Slope, colour = "y = x"),               data = straight.line, show.legend = FALSE) +   guides(fill = "none", linetype = "none",  shape = "none", size = "none")   

El código se puede hacer un poco menos repetitivo y podemos dejar de lado algunas cosas (Liek el 9988777668 -call):

  ggplot(data = df, mapping = aes(x = x.v, y = y.v)) +   geom_point(colour = "blue") +   geom_smooth(aes(colour = "line of best fit"), method = "lm") +   geom_abline(mapping = aes(intercept = Inter, slope = Slope, colour = "y = x"),               data = straight.line, show.legend = FALSE)    

ingrese la descripción de la imagen aquí

¿Por qué necesitamos usar CaptionValues0 aquí y no CaptionValues1111 ?

de la documentación:

show.legend

lógico. ¿Debe incluir esta capa en las leyendas? NA, el valor predeterminado, incluye si se asignan a cualquier estética. Falso nunca incluye, y es verdad siempre incluye. También puede ser un vector lógico llamado para seleccionar finamente la estética para mostrar

Esto significa que vamos a usar CaptionValues2 para el CaptionValues3 -Call Utilizamos esta capa en la leyenda. Sin embargo, no queremos usar esta capa y, por lo tanto, necesitamos CaptionValues4 . Puedes ver que esto no influye, qué colores se incluyen en la leyenda, solo la capa.

Datos

  CaptionValues5  
 

The following works:

library(ggplot2)  ggplot() +   geom_point(mapping = aes(x = x.v, y = y.v),              data = df, colour = "blue") +   geom_smooth(mapping = aes(x = x.v, y = y.v, colour = "line of best fit"),               data = df, method = "lm", show.legend = NA) +   geom_abline(mapping = aes(intercept = Inter, slope = Slope, colour = "y = x"),               data = straight.line, show.legend = FALSE) +   guides(fill = "none", linetype = "none",  shape = "none", size = "none") 

The code can be made a little bit less repetitive and we can leave out some things (liek the guide-call):

ggplot(data = df, mapping = aes(x = x.v, y = y.v)) +   geom_point(colour = "blue") +   geom_smooth(aes(colour = "line of best fit"), method = "lm") +   geom_abline(mapping = aes(intercept = Inter, slope = Slope, colour = "y = x"),               data = straight.line, show.legend = FALSE)  

enter image description here

Why do we need to use show.legend = FALSE here and not show.legend = NA?

From the documentation:

show.legend

logical. Should this layer be included in the legends? NA, the default, includes if any aesthetics are mapped. FALSE never includes, and TRUE always includes. It can also be a named logical vector to finely select the aesthetics to display

This means that is we use show.legend = NA for the geom_abline-call we use this layer in the legend. However, we don't want to use this layer and therefore need show.legend = FALSE. You can see that this does not influence, which colors are included in the legend, only the layer.

Data

set.seed(42) # For reproducibilty df = data.frame(x.v = seq(0, 1, 0.025),                 y.v = runif(41)) straight.line = data.frame(Inter = 0, Slope = 1) 
 
 

Relacionados problema

1  GGPLOT2 La leyenda no tiene lugar en el gráfico?  ( Ggplot2 legend does not take place in graph ) 
Aquí mi código: modele <- ggplot(data = liste_ref, aes(x = BV, y = liste_ref[,p]))+ geom_point(aes(text = paste("Code opération: ",OPE_ID), colour = "F...

0  Título de la leyenda no se muestra en GGPLOT-MAPS  ( Legend title not displayed in ggplot maps ) 
Tan pronto como agrego un rango dinámico para mis etiquetas de leyenda dentro de la opción Scale_Fill_Distiller, obtengo solo un "1" en lugar del título de la...

2  ¿Cómo debo vincular la colocación de la leyenda a los valores de los datos en GGPLOT2?  ( How should i link legend placement to values of data in ggplot2 ) 
Me gustaría ajustar automáticamente la colocación vertical de mi leyenda para que la leyenda termine cerca de los datos. Me gustaría que el centro de la leyen...

1  RIPRO DE R: Traer los valores formateados en expresión () en la leyenda gráfica base  ( R plot bringing formatted values into expression in base graphics legend ) 
Siguiendo el problema: Intento hacer una leyenda donde tendré algo como: ɛ = 5 L / (mol cm). Sin embargo, se calcula el número, aquí un ejemplo mínimo: pl...

1  ¿Cómo pongo anotaciones GGPLOT en mi figura leyenda?  ( How do i put ggplot annotations onto my figure legend ) 
Estoy tratando de poner anotaciones de mi GGPLOT en la leyenda de la figura. Actualmente, mi figura se ve así: Las líneas horizontales que agregué repres...

2  En Zend Subform, ¿cómo configuro la leyenda escapar a FALSO?  ( In zend subform how do i set legend escape to false ) 
Tengo un subformulario, donde configuro una leyenda. $dob = new Zend_Form_SubForm(); $dob->addElement($birthdayMonth) ->addElement($birthdayDay) ->setLegen...

1  Suprimir leyenda en la parcela VCD Assoc / solo una leyenda para múltiples parcelas asociadas  ( Suppress legend in vcd assoc plot only one legend for multiple assoc plots ) 
Estoy produciendo varias parcelas de asociación en una parcela con vcd 's assoc() . En lugar de tener una leyenda de color para cada parcela, me gustaría t...

1  ¿Cómo eliminar líneas de leyendas en ggplot?  ( How to remove lines from legends in ggplot ) 
He leído algunas publicaciones sobre esto, pero no encontré la solución adecuada para mi problema. Debido a que la línea discontinua de Geom_Vline es vertical...

9  MATLAB: Asignar varios colores al texto en la leyenda  ( Matlab assign multiple colors to text in legend ) 
Estoy tratando de colorear el texto del código en una leyenda. (Ya que estoy tratando de ordenar varias parcelas en diferentes categorías, no puedo confiar só...

0  Parcela de dispersión interactiva con leyenda de ColorBar  ( Interactive scatter plot with colorbar legend ) 
Tengo una matriz 3D (3,10). Tengo una parcela de dispersión 2D, donde el color y el tamaño de los marcadores dependen de la 3ª columna. Me atasco en dos cos...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos