使用数据中指定的颜色名称作为 geom_bar 中的填充颜色
Use color names specified in data as fill color in geom_bar
我有一个这样的数据框 (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"
有没有办法使用 geom_bar
创建条形图,填充颜色根据在数据集中明确指定为变量的实际颜色名称(BARCOLOR 列)?我现在的剧情是这样的:
ggplot(freqOvertimeHourlyData, aes(x = INTERVAL, y = HOURS))+
geom_histogram(stat = "identity")+
theme(legend.position = "none")
您需要确保 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))
如果您希望使用未经缩放的原始值来满足您的审美需求,则可以使用 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()
我有一个这样的数据框 (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"
有没有办法使用 geom_bar
创建条形图,填充颜色根据在数据集中明确指定为变量的实际颜色名称(BARCOLOR 列)?我现在的剧情是这样的:
ggplot(freqOvertimeHourlyData, aes(x = INTERVAL, y = HOURS))+
geom_histogram(stat = "identity")+
theme(legend.position = "none")
您需要确保 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))
如果您希望使用未经缩放的原始值来满足您的审美需求,则可以使用 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()