Tengo un dataframe R (df) que estoy trazando como un gráfico de barras en ggplot2 y coloreado en base a una columna en el dataframe (df$type
). En este momento, estoy usando el patrón de coloreado predeterminado (scale_fill_brewer) para asignar colores.En R, ¿cómo cambio el valor del color de solo un valor en scale_fill_brewer de ggplot2?
¿Cómo puedo asignar el color negro a un valor, (df$type == -1
) y usar scale_fill_brewer para asignar el resto de los colores? (todos los demás tipos de df $ están dentro de un conjunto de enteros de 1 a X, donde X es el número de valores únicos)
Hasta ahora, he podido hacer esto manualmente calculando el conjunto de colores scale_fill_brewer utiliza para N elementos diferentes que luego dejan el color negro y lo pasan al scale_fill_manual
.
rhg_cols1<- c("#000000","#F8766D","#7CAE00","#00BFC4","#C77CFF")
ggplot(y=values,data=df, aes(x=name, fill=factor(type))) +
geom_bar()+ scale_fill_manual(values = rhg_cols1)
El problema es que necesito una solución que funciona sin asignar manualmente los colores mediante el uso de una calculadora de color hexadecimal para averiguar los valores hexadecimales de scale_fill_brewer.
algo como:
ggplot(y=values,data=df, aes(x=name, fill=factor(type))) +
geom_bar()+ scale_fill_brewer(value(-1, "black")
Gracias!
EDIT: La solución debe trabajar durante más de 30 colores y el trabajo para "Set2" de ColorBrewer
Me preguntaba acerca de la misma. Sería genial si 'scale_fill_manual()' y otros aceptaran un vector incompleto de especificaciones, p. 'scale_fill_manual (values = c ('- 1' = 'black'))' y comprende que los otros colores se deben seleccionar automáticamente como de costumbre. –