R语言 ggplot带有彩虹色的条形图

cnjp1d6j  于 2023-04-03  发布在  其他
关注(0)|答案(2)|浏览(173)

我做了一个模型,并计算了它的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)

这是我的灰色图像。

igsr9ssn

igsr9ssn1#

您没有看到条形图随scale_color_gradientn(...)改变颜色的原因有两个:
1.条的颜色Map到fill美学,而不是color(条的轮廓)。因此scale_fill_gradientn()是合适的。
1.填充美感不会Map到打印代码中的任何内容,因此在您更改颜色之前,条形图不会更改颜色。
在这里,您希望将fill美学Map到与Map到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中的原始绘图代码;然而,其效果将是扰乱彩虹颜色。

pcww981p

pcww981p2#

试试看

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))

相关问题