2010-06-20 85 views
28

¿Alguien sabe cómo usar una paleta de colores predefinida en ggplot?Uso de una paleta de colores predefinida en ggplot

Tengo un vector de colores me gustaría usar:

rhg_cols <- c("#771C19", "#AA3929", "#E25033", "#F27314", "#F8A31B", 
       "#E2C59F", "#B6C5CC", "#8E9CA3", "#556670", "#000000") 

Pero cuando trato de pasarlo a no pasó nada

ggplot(mydata, aes(factor(phone_partner_products)), color = rhg_cols) + 
    geom_bar() 

Respuesta

25

Debe poner colour = rhg_cols dentro aes(). Por lo que puedo decir, ¿quieres aplicar gradiente a barras (en barra) con factor variable en la abscisa? A continuación, utilice fill - probar este lugar:

ggplot(mydata, aes(factor(phone_partner_products), fill = factor(phone_partner_products))) + 
    geom_bar() + 
    scale_fill_manual(values = rhg_cols) 

o tratar de lograr réplica aproximada con:

ggplot(mydata, aes(factor(phone_partner_products), fill = phone_partner_products))) + 
    geom_bar() + 
    scale_fill_gradient(low = "#771C19", hi = "#000000") 

en cuenta que en el segundo caso una variable continua se pasa a fill estética, por lo tanto scale_fill_gradient se pasa después. Si pasa a factorfill AES, debe seguir con scale_fill_manual(values = rhg_cols)

+1

Debe ser "alto" en lugar de "hola" en scale_fill_gradient (bajo = "# 771C19", hi = "# 000000"). – Eduardo

9

Primera añadir, los colores a su conjunto de datos:

mydata$col <- rhg_cols 

Entonces mapa de color a esa columna y utilizar scale_colour_identity

ggplot(mydata, aes(factor(phone_partner_products, colour = col))) + 
    geom_bar() + 
    scale_colour_identity() 
+0

mmm ... la primera línea tiene algun problema ... Tengo por lo menos 800 fila y los colores son sólo el 10 > misdatos $ Col <- rhg_cols error en '$ <-. Data.frame' ('* tmp *', "col", value = c ("# 771C19", "# AA3929",: reemplazo tiene 10 filas, los datos tienen 865 –

+0

y, por supuesto, el factor (phone_partner_products) devuelve solo 5 elementos, por lo que la paleta de 10 colores debería ser suficiente. –

+1

Oh, es una paleta. Es por eso que el código reproducible siempre es útil. – hadley

18

Si los colores son una gama de colores, utilice scale_colour_manual:

ggplot(mydata, aes(factor(phone_partner_products), colour = colour_variable)) + 
    scale_colour_manual(values = rhg_cols) 
+0

Esto me apuntó en la dirección correcta, sin embargo, el argumento para 'scale_colour_manual()' tenía que ser 'values ​​= .. .' para que funcione – mvds

8

Dado que los colores que desea son los valores de la estética del color, lo que realmente quiere es la escala identity, en este caso scale_fill_identity.

ggplot(mydata, aes(factor(phone_partner_products)), color=rhg_cols) + 
    geom_bar() + 
    scale_fill_identity()) 

Puesto que usted no proporcionó datos, voy a utilizar un ejemplo un poco diferente, utilizando los datos de color:

rhg_cols <- c("#771C19","#AA3929","#E25033","#F27314","#F8A31B", 
       "#E2C59F","#B6C5CC","#8E9CA3","#556670","#000000") 
mydata <- sample(rhg_cols, 100, replace = TRUE) 
qplot(mydata, fill = mydata) + 
    scale_fill_identity() 

enter image description here


nota: omití + opts(axis.text.x=theme_text(angle=90)) para mayor claridad en el ejemplo.

Cuestiones relacionadas