Saltar al contenido

cambiar el color de una sola barra en ggplot

Solución:

Opción 1: cambiar el color de una sola barra. Siguiendo la sugerencia de Henrick, puede crear una nueva variable con NA para el color predeterminado y cadenas de caracteres / factores para colores no predeterminados (el primero resulta ser rojo):

area.color <- c(NA, "withcolor", NA, NA)
plot.sale.bad <- ggplot(data=df.sale, aes(x=area, y=sale, fill=area.color)) +
  geom_bar(stat="identity") +
  xlab(colnames(df.sale)[1]) +
  ylab(colnames(df.sale)[2]) +
  ggtitle("Porównanie sprzedaży") 
plot.sale.bad

Opción 2: busque el nombre del color gris oscuro predeterminado que le guste. Este no es el color predeterminado si simplemente elimina el scale_fill_manual línea en su código original (en ese caso, obtiene cuatro pasteles diferentes), así que supongo que se refiere al color gris producido por el fragmento de código justo encima de este párrafo, para aquellas barras donde area.color==NA. En ese caso, puede mirar el código fuente (o args, de todos modos) para scale_fill_discrete:

> args(scale_fill_discrete)
# function (..., h = c(0, 360) + 15, c = 100, l = 65, h.start = 0, 
#     direction = 1, na.value = "grey50") 
# NULL

El predeterminado para na.value es "grey50". Entonces, si quisieras usar scale_fill_manual, podrías hacerlo así:

plot.sale.bad <- ggplot(data=df.sale, aes(x=area, y=sale, fill=area)) +
  geom_bar(stat="identity") +
  scale_fill_manual(values=c("grey50", "red", "grey50", "grey50")) +
  xlab(colnames(df.sale)[1]) +
  ylab(colnames(df.sale)[2]) +
  ggtitle("Porównanie sprzedaży") 
plot.sale.bad

Si le gusta tener todo en la llamada ggplot, puede usar un ifelse declaración dentro factor() para el relleno como se muestra a continuación.

Esto también separa la leyenda en dos categorías (es decir, resaltada y no resaltada) para que no repita los valores que se muestran en el eje x. Esto también proporciona otra dimensión ilustrativa de la trama en la leyenda.

plot.sale.bad2 <- ggplot(data=df.sale,
                         aes(x=area,
                             y=sale,
                             fill=factor(ifelse(area=="Południe","Highlighted","Normal")))) +
  geom_bar(stat="identity") +
  scale_fill_manual(name = "area", values=c("red","grey50")) +
  xlab(colnames(df.sale)[1]) +
  ylab(colnames(df.sale)[2]) +
  ggtitle("Porównanie sprzedaży") 

plot.sale.bad2

Parcela con leyenda

Si la leyenda no es necesaria, puede agregar show.legend = FALSE al geom_bar() llamar para producir lo siguiente:

Parcela sin leyenda

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *