在ggplot中使用预定义的调色板

Lib*_*ici 33 r ggplot2

有谁知道如何在ggplot中使用预定义的调色板?

我有一个我想要使用的颜色矢量:

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

但是当我试图将它传递给任何事情时

ggplot(mydata, aes(factor(phone_partner_products)), color = rhg_cols) +
  geom_bar()
Run Code Online (Sandbox Code Playgroud)

aL3*_*3xa 33

你必须把它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)
Run Code Online (Sandbox Code Playgroud)

或尝试使用以下方法获得近似副本:

ggplot(mydata, aes(factor(phone_partner_products), fill = phone_partner_products))) +
  geom_bar() + 
  scale_fill_gradient(low = "#771C19", high = "#000000")
Run Code Online (Sandbox Code Playgroud)

请注意,在第二种情况下,连续变量被传递给fill美学,因此scale_fill_gradient之后传递.如果你传递factorfillaes,你必须坚持scale_fill_manual(values = rhg_cols).


had*_*ley 23

如果颜色是调色板,请使用scale_colour_manual:

ggplot(mydata, aes(factor(phone_partner_products), colour = colour_variable)) +
  scale_colour_manual(values = rhg_cols)
Run Code Online (Sandbox Code Playgroud)

  • 这为我指明了正确的方向,但是“scale_colour_manual()”的参数必须是“values=...”才能使其正常工作。 (2认同)

had*_*ley 10

首先添加数据集的颜色:

mydata$col <- rhg_cols
Run Code Online (Sandbox Code Playgroud)

然后将颜色映射到该列并使用 scale_colour_identity

ggplot(mydata, aes(factor(phone_partner_products, colour = col))) + 
  geom_bar() + 
  scale_colour_identity()
Run Code Online (Sandbox Code Playgroud)

  • 哦,这是一个调色板。这就是为什么可重现的代码总是有用的。 (2认同)

Ale*_*own 9

由于您想要的颜色是颜色美学中的值identity,因此在这种情况下您真正需要的是比例尺scale_fill_identity.

 ggplot(mydata, aes(factor(phone_partner_products)), color=rhg_cols) +
   geom_bar() +
   scale_fill_identity())
Run Code Online (Sandbox Code Playgroud)

由于您没有提供数据,我将使用您的颜色数据稍微不同的示例:

 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()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


注意:+ opts(axis.text.x=theme_text(angle=90))为了清楚起见,我省略了示例.