我已经制作了一个模型并计算了它的 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)
试试
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))
您没有看到条形图随
scale_color_gradientn(...)
改变颜色的原因有两个:
条形的颜色映射到
fill
美学,而不是 color
(条形轮廓)。因此scale_fill_gradientn()
是合适的。
填充美学不会映射到您的绘图代码中的任何内容,因此在您这样做之前,条形图不会改变颜色。
在这里,您要将要映射的
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的原始剧情代码;然而,效果将是扰乱彩虹色。