带有彩虹色的 ggplot 条

问题描述 投票:0回答:2

我已经制作了一个模型并计算了它的 varImp()。我需要使用不同颜色的条来绘制 varImp()。我使用了 ggplot 和以下代码。但是,我的情节中的条形图始终为灰色。我怎样才能把它们变成随机颜色的彩虹? 这些是我的代码

imp <- varImp(rf_final)
cols = rainbow(45, s=.6, v=.9)[sample(1:45,45)]
ggplot(imp)+ geom_bar(stat="identity")+scale_colour_gradientn(colours=cols)

这是我的灰色图像。

r ggplot2
2个回答
0
投票

试试

ggplot(imp)+ geom_bar(stat="identity")+scale_colour_gradientn(colours = c("red","orange","yellow","green","blue"),
                         values = c(1.0,0.8,0.6,0.4,0.2,0)) )

ggplot(imp)+ geom_bar(stat="identity")+scale_colour_manual(values = rainbow(8)) 

0
投票

您没有看到条形图随

scale_color_gradientn(...)
改变颜色的原因有两个:

  1. 条形的颜色映射到

    fill
    美学,而不是
    color
    (条形轮廓)。因此
    scale_fill_gradientn()
    是合适的。

  2. 填充美学不会映射到您的绘图代码中的任何内容,因此在您这样做之前,条形图不会改变颜色。

在这里,您要将要映射的

fill
美学指定为与映射到
x
美学的任何内容相同。我不知道你的数据集的结构,
imp
,所以这是一个例子:

library(ggplot2)

df <- data.frame(x=factor(1:45), y=1:45)

ggplot(df, aes(x=x, y=y, fill=x)) +

  # use geom_col instead of geom_bar(stat="identity")
  # show.legend=F prevents the legend from being drawn
  geom_col(show.legend = FALSE) +
      
  coord_flip() +
  scale_fill_manual(values = rainbow(45))

你也可以分配

values= rainbow(45, s=.6, v=.9)[sample(1:45,45)]
来复制OP的原始剧情代码;然而,效果将是扰乱彩虹色。

© www.soinside.com 2019 - 2024. All rights reserved.