Plot Histogram with Multiple Different Colors in R (2 Examples)
This tutorial demonstrates how to plot a histogram with multiple colors in the R programming language.
Example Data
data(iris) # Load example data head(iris) # Sepal.Length Sepal.Width Petal.Length Petal.Width Species # 1 5.1 3.5 1.4 0.2 setosa # 2 4.9 3.0 1.4 0.2 setosa # 3 4.7 3.2 1.3 0.2 setosa # 4 4.6 3.1 1.5 0.2 setosa # 5 5.0 3.6 1.4 0.2 setosa # 6 5.4 3.9 1.7 0.4 setosa |
data(iris) # Load example data head(iris) # Sepal.Length Sepal.Width Petal.Length Petal.Width Species # 1 5.1 3.5 1.4 0.2 setosa # 2 4.9 3.0 1.4 0.2 setosa # 3 4.7 3.2 1.3 0.2 setosa # 4 4.6 3.1 1.5 0.2 setosa # 5 5.0 3.6 1.4 0.2 setosa # 6 5.4 3.9 1.7 0.4 setosa
Example 1: Creating Base R Histogram with Multiple Colors
iris_breaks <- hist(iris$Sepal.Length)$breaks # Get breaks of histogram |
iris_breaks <- hist(iris$Sepal.Length)$breaks # Get breaks of histogram
iris_colors <- rep("blue", length(iris_breaks)) # Define colors of histogram iris_colors[iris_breaks > 5 & iris_breaks <= 6] <- "green" iris_colors[iris_breaks > 6 & iris_breaks <= 7] <- "pink" iris_colors[iris_breaks > 7] <- "red" |
iris_colors <- rep("blue", length(iris_breaks)) # Define colors of histogram iris_colors[iris_breaks > 5 & iris_breaks <= 6] <- "green" iris_colors[iris_breaks > 6 & iris_breaks <= 7] <- "pink" iris_colors[iris_breaks > 7] <- "red"
hist(iris$Sepal.Length, # Draw histogram with colors breaks = iris_breaks, col = iris_colors) |
hist(iris$Sepal.Length, # Draw histogram with colors breaks = iris_breaks, col = iris_colors)
Example 2: Creating ggplot2 Histogram with Multiple Colors
install.packages("ggplot2") # Install ggplot2 package library("ggplot2") # Load ggplot2 |
install.packages("ggplot2") # Install ggplot2 package library("ggplot2") # Load ggplot2
ggplot_groups <- rep("Group 1", nrow(iris)) # Define colors of histogram ggplot_groups[iris$Sepal.Length > 5 & iris$Sepal.Length <= 6] <- "Group 2" ggplot_groups[iris$Sepal.Length > 6 & iris$Sepal.Length <= 7] <- "Group 3" ggplot_groups[iris$Sepal.Length > 7] <- "Group 4" |
ggplot_groups <- rep("Group 1", nrow(iris)) # Define colors of histogram ggplot_groups[iris$Sepal.Length > 5 & iris$Sepal.Length <= 6] <- "Group 2" ggplot_groups[iris$Sepal.Length > 6 & iris$Sepal.Length <= 7] <- "Group 3" ggplot_groups[iris$Sepal.Length > 7] <- "Group 4"
ggplot_data <- data.frame(Sepal.Length = iris$Sepal.Length, # Construct data frame for ggplot2 plot ggplot_groups = ggplot_groups) head(ggplot_data) # Display head of data frame # Sepal.Length ggplot_groups # 1 5.1 Group 2 # 2 4.9 Group 1 # 3 4.7 Group 1 # 4 4.6 Group 1 # 5 5.0 Group 1 # 6 5.4 Group 2 |
ggplot_data <- data.frame(Sepal.Length = iris$Sepal.Length, # Construct data frame for ggplot2 plot ggplot_groups = ggplot_groups) head(ggplot_data) # Display head of data frame # Sepal.Length ggplot_groups # 1 5.1 Group 2 # 2 4.9 Group 1 # 3 4.7 Group 1 # 4 4.6 Group 1 # 5 5.0 Group 1 # 6 5.4 Group 2
my_plot <- ggplot(ggplot_data, # Draw histogram with colors aes(x = Sepal.Length, fill = ggplot_groups)) + geom_histogram() my_plot |
my_plot <- ggplot(ggplot_data, # Draw histogram with colors aes(x = Sepal.Length, fill = ggplot_groups)) + geom_histogram() my_plot
my_plot + # Change colors in histogram scale_fill_manual(values = c("Group 1" = "blue", "Group 2" = "green", "Group 3" = "pink", "Group 4" = "red")) |
my_plot + # Change colors in histogram scale_fill_manual(values = c("Group 1" = "blue", "Group 2" = "green", "Group 3" = "pink", "Group 4" = "red"))