我有一个数据帧( freqOvertimeHourlyData ),如下所示:
HOURS INTERVAL BARCOLOR
1 147 16-17 "green"
2 150 17-18 "green"
3 144 18-19 "blue"
4 149 19-20 "red"
5 139 20-21 "red"
6 101 21-22 "red"
有没有办法根据BARCOLOR栏中的值使用geom_bar
为条形着色?我目前的情节是这样的:
ggplot(freqOvertimeHourlyData, aes(x=INTERVAL, y=HOURS))+
geom_histogram(stat="identity")+
theme(legend.position="none")
答案 0 :(得分:7)
如果您希望使用原始值而不缩放,以获得美观效果,则可以使用scale_identity
。使用来自@Sandy Muspratt的答案的“DF”:
ggplot(DF, aes(x = INTERVAL, y = HOURS, fill = BARCOLOR))+
geom_bar(stat = "identity")+
theme(legend.position = "none") +
scale_fill_identity()
答案 1 :(得分:2)
您需要确保BARCOLOR
是一个因素。
你需要告诉ggplot用颜色填充条形图 - fill = BARCOLOR
会这样做。
但ggplot
BARCOLOR
的内容与ggplot
的内容无关,scale_fill_manual()
将使用其默认颜色。
您需要在library(ggplot2)
DF = read.table(text = '
HOURS INTERVAL BARCOLOR
1 147 16-17 "blue"
2 150 17-18 "green"
3 144 18-19 "blue"
4 149 19-20 "red"
5 139 20-21 "black"
6 101 21-22 "green" ', header = TRUE)
str(DF) # Check BARCOLOR is a factor
ggplot(DF, aes(x = INTERVAL, y = HOURS, fill = BARCOLOR))+
geom_bar(stat = "identity")+
theme(legend.position = "none") +
scale_fill_manual(values = levels(DF$BARCOLOR))
{{1}}