我正在尝试在ggplot中使用彩条但有问题。有人可以解释如何正确使用fill
参数和scale_colour
参数吗?
library(ggplot2)
df<-data.frame(c(80,33,30),c("Too militarized","Just doing their job","Unfairly tarnished by a few"),c("57%","23%","21%"))
colnames(df)<-c("values","names","percentages")
ggplot(df,aes(names,values))+
geom_bar(stat = "identity",position = "dodge",fill=names)+
geom_text(aes(label=percentages), vjust=0)+
ylab("percentage")+
xlab("thought")+
scale_colour_manual(values = rainbow(nrow(df)))
工作条形图示例
barplot(c(df$values),names=c("Too militarized","Just doing their job","Unfairly tarnished by a few"),col = rainbow(nrow(df)))
答案 0 :(得分:1)
主要问题是fill
内的aes
来电中没有geom_bar()
。从数据映射到颜色等视觉效果时,它必须位于aes()
内。您可以通过使用fill=names
打包aes()
或直接指定填充颜色,而不是使用names
来解决此问题:
选项1(无图例):
ggplot(df, aes(names, values)) +
geom_bar(stat="identity", fill=rainbow(nrow(df))) +
ylab("percentage") +
xlab("thought")
选项2(图例,因为从数据到颜色的映射):
ggplot(df, aes(names, values)) +
geom_bar(stat="identity", aes(fill=names)) +
ylab("percentage") +
xlab("thought") +
scale_fill_manual(values=rainbow(nrow(df)))
请注意,在这两种情况下,您可能希望在调用df$names
之前明确考虑ggplot
,以便按照您想要的顺序获取条形码。