Help-Bar chart different colours bars

Hi all,
I am trying to create a bar chart for the pubic dataset Bellabeat. I want each bar to have a different color. My code is the following:
ggplot(data=daily_activity_summary)+
geom_col(mapping = aes(x=ActivityDateWeekly, y=Average_Total_Steps,fill=ActivityDateWeekly))
The issue is that it is produced a bar chart with different shades of blue (i.e. dark blue,light blue etc). However I want each bar chart to have different color. Could someone help with this issue please?
Many thanks in advance
Panos

Hi @Panagiotis_Emmanouil , you could put the colors by this way: with fill way.

# Define the color palette for the bars
my_colors <- c("#E69F00", "#56B4E9", "#009E73", "#F0E442", "#0072B2", "#D55E00", "#CC79A7") # Is necesary put the number of colors according bars.

# Create the bar chart with custom fill colors
ggplot(data = daily_activity_summary) +
  geom_col(mapping = aes(x = ActivityDateWeekly, y = Average_Total_Steps, fill = ActivityDateWeekly)) +
  scale_fill_manual(values = my_colors)

Try to put the data for better help us all the R community.
check

1 Like

Welcome to the community @Panagiotis_Emmanouil. Below are a couple examples for changing the color of the bars (using sample data). By specifying fill = factor(ActivityDateWeekly), ggplot will color each bar uniquely. There are numerous color palettes to explore, so the final example looks at using a defined palette from ColorBrewer.

library(tidyverse)

# sample data
daily_activity_summary = data.frame(
  ActivityDateWeekly = seq.Date(as.Date(today()), as.Date(today() + weeks(5)), by = 'weeks'),
  Average_Total_Steps = seq(1000, 6000, 1000)
  )

# original plot
ggplot(data=daily_activity_summary)+
  geom_col(mapping = aes(x=ActivityDateWeekly, 
                         y=Average_Total_Steps,
                         fill=ActivityDateWeekly))

# wrap the fill in factor()
ggplot(data=daily_activity_summary)+
  geom_col(mapping = aes(x=ActivityDateWeekly, 
                         y=Average_Total_Steps,
                         fill=factor(ActivityDateWeekly)))

# plot with ColorBrewer palette
ggplot(data=daily_activity_summary)+
  geom_col(mapping = aes(x=ActivityDateWeekly, 
                         y=Average_Total_Steps,
                         fill=factor(ActivityDateWeekly))) +
  scale_fill_brewer(palette = 'Set1')

Created on 2023-04-19 with reprex v2.0.2

2 Likes

scottyd22,
many thanks for your help! Much appreciated

This topic was automatically closed 21 days after the last reply. New replies are no longer allowed.

If you have a query related to it or one of the replies, start a new topic and refer back with a link.