I have the following in order to bar plot the data frame.
c1 <- c(10, 20, 40)
c2 <- c(3, 5, 7)
c3 <- c(1, 1, 1)
df <- data.frame(c1, c2, c3)
ggplot(data=df, aes(x=c1+c2/2, y=c3)) +
geom_bar(stat="identity", width=c2) +
scale_fill_manual(values=c("#FF6666"))
I end up having only grey bars: Grey bars for bar plot
I would like to change the color of the bar. I already tried different scale_fill_manual from http://www.cookbook-r.com/Graphs/Colors_(ggplot2)/ but still have grey bars.
Thank you for your help.
If you want all the bars to get the same color ( fill
), you can easily add it inside geom_bar
.
ggplot(data=df, aes(x=c1+c2/2, y=c3)) +
geom_bar(stat="identity", width=c2, fill = "#FF6666")
Add fill = the_name_of_your_var
inside aes
to change the colors depending of the variable :
c4 = c("A", "B", "C")
df = cbind(df, c4)
ggplot(data=df, aes(x=c1+c2/2, y=c3, fill = c4)) +
geom_bar(stat="identity", width=c2)
Use scale_fill_manual()
if you want to manually the change of colors.
ggplot(data=df, aes(x=c1+c2/2, y=c3, fill = c4)) +
geom_bar(stat="identity", width=c2) +
scale_fill_manual("legend", values = c("A" = "black", "B" = "orange", "C" = "blue"))
You could also directly assign your x
variable to the fill
aesthetic as a factor
like this:
c1 <- c(10, 20, 40)
c2 <- c(3, 5, 7)
c3 <- c(1, 1, 1)
df <- data.frame(c1, c2, c3)
library(ggplot2)
ggplot(data=df, aes(x=c1+c2/2, y=c3, fill = factor(c1+c2/2))) +
geom_bar(stat="identity", width=c2)
When you know what these factors are called (this case: 11.5, 22.5, 43.5), you can simply change its colors using scale_fill_manual
with values
like this:
library(ggplot2)
ggplot(data=df, aes(x=c1+c2/2, y=c3, fill = factor(c1+c2/2))) +
geom_bar(stat="identity", width=c2) +
scale_fill_manual("Legend", values = c("11.5" = "red", "22.5" = "green", "43.5" = "blue"))
Created on 2023-01-26 with reprex v2.0.2
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.