有谁知道如何在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()
答案 0 :(得分:31)
您必须将colour = rhg_cols
放在aes()
内。据我所知,你想在横坐标上用因子变量对条形(在条形图中)应用渐变吗?然后使用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", high = "#000000")
请注意,在第二种情况下,连续变量传递给fill
美学,因此scale_fill_gradient
之后传递。如果您将factor
传递给fill
,则必须坚持scale_fill_manual(values = rhg_cols)
。
答案 1 :(得分:23)
如果颜色是调色板,请使用scale_colour_manual
:
ggplot(mydata, aes(factor(phone_partner_products), colour = colour_variable)) +
scale_colour_manual(values = rhg_cols)
答案 2 :(得分:10)
首先添加数据集的颜色:
mydata$col <- rhg_cols
然后将颜色映射到该列并使用scale_colour_identity
ggplot(mydata, aes(factor(phone_partner_products, colour = col))) +
geom_bar() +
scale_colour_identity()
答案 3 :(得分:9)
由于您想要的颜色是颜色美学中的值,您真正想要的是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()
注意:为了清楚起见,我省略了+ opts(axis.text.x=theme_text(angle=90))
。