Использование предварительно определенной цветовой палитры в ggplot
Кто-нибудь знает, как использовать предварительно определенную цветовую палитру в ggplot?
У меня есть вектор цветов, который я хотел бы использовать:
rhg_cols <- c("#771C19", "#AA3929", "#E25033", "#F27314", "#F8A31B",
"#E2C59F", "#B6C5CC", "#8E9CA3", "#556670", "#000000")
Но когда я пытаюсь передать это, ничего не произошло
ggplot(mydata, aes(factor(phone_partner_products)), color = rhg_cols) +
geom_bar()
Ответы
Ответ 1
Вы должны положить colour = rhg_cols
внутри aes()
. Насколько я могу судить, вы хотите применить градиент к барам (в barplot) с переменной фактором по абсциссе? Затем используйте fill
- попробуйте это вместо:
ggplot(mydata, aes(factor(phone_partner_products), fill = factor(phone_partner_products))) +
geom_bar() +
scale_fill_manual(values = rhg_cols)
или попытайтесь получить приблизительную копию с помощью
ggplot(mydata, aes(factor(phone_partner_products), fill = phone_partner_products))) +
geom_bar() +
scale_fill_gradient(low = "#771C19", hi = "#000000")
Обратите внимание, что во втором случае непрерывная переменная передается в fill
эстетику, поэтому scale_fill_gradient
передается впоследствии. Если вы пройдете factor
до fill
aes, вы должны придерживаться scale_fill_manual(values = rhg_cols)
Ответ 2
Если цвета являются палитрой, используйте scale_colour_manual
:
ggplot(mydata, aes(factor(phone_partner_products), colour = colour_variable)) +
scale_colour_manual(values = rhg_cols)
Ответ 3
Сначала добавьте цвета к вашему набору данных:
mydata$col <- rhg_cols
Затем поместите цвет в этот столбец и используйте scale_colour_identity
ggplot(mydata, aes(factor(phone_partner_products, colour = col))) +
geom_bar() +
scale_colour_identity()
Ответ 4
Поскольку цвета, которые вы хотите, имеют значения в цветовой эстетике, то, что вы действительно хотите, это шкала identity
, в данном случае scale_fill_identity
.
ggplot(mydata, aes(factor(phone_partner_products)), color=rhg_cols) +
geom_bar() +
scale_fill_identity())
Поскольку вы не поставляли данные, я собираюсь использовать несколько другой пример, используя ваши данные о цвете:
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]()
Примечание: я пропустил + opts(axis.text.x=theme_text(angle=90))
для ясности в примере.