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.

La escala scale_fill_manual sólo se está aplicando a la leyenda y no a las barras.

Tengo un marco de datos (df) que se ve de la siguiente manera:

| gene | p-value | p-value_dif | categoría de p-value |
|:—- |:——:| —–:|—–:|
| a | 0.06 | 0.01 | no signif.
c | 0.07 | 0.02 | no signif.
d | 0.008 | – 0.03 | signif.
e |0.009 | – 0.04 | signif.

He creado un gráfico de barra divergente con el siguiente código:

ggplot(df, aes(x=gene,
y=p_value_dif ,
label=p_value_dif )) +
geom_bar(stat=’identity’,
aes(fill= (as.factor(p_value_dif)),
width=0.9) +
scale_fill_manual(“legend”,
values = c(“Significant” = “black”, “Insignificant” = “orange”))+
coord_flip()

El problema es que solo mi leyenda cambia de color a negro y naranja. Las barras permanecen grises. ¿Qué puedo hacer para que los colores de mi leyenda coincidan con los colores de mis barras?

Nota: si “fill” no se establece como “factor”, obtengo lo siguiente: Error: Continuous value supplied to discrete scale.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para hacer que los colores de las barras coincidan con la leyenda, es necesario asegurarse de que los niveles de factor asignados a los colores en nuestra función scale_fill_manual coincidan con los valores en nuestra columna p_value_category.

    Para hacer esto, primero podemos convertir nuestra columna p_value_category a un factor con dos niveles (sig y no sig) y luego establecer estos niveles como los valores en nuestra función scale_fill_manual.

    Aquí está el código actualizado:

    df$p_value_category <- factor(df$p_value_category, levels = c("sig", "no sig"))
    
    ggplot(df, aes(x=gene, 
                   y=p_value_dif , 
                   label=p_value_dif )) + 
       geom_bar(stat='identity', 
                aes(fill= p_value_category), 
                width=0.9)  +
       scale_fill_manual("leyenda", 
                         values = c("sig" = "negro", "no sig" = "naranja")) +
       coord_flip()
    

    Al convertir primero nuestra columna en un factor y luego asignar los niveles como valores en nuestra función scale_fill_manual, aseguramos que los colores coincidan tanto para las barras como para la leyenda.

Comments are closed.