Ever since I started using ggplot2 more often at work in order to do graphs, I’ve realized something about the use of colour in bar graphs vs. dot plots: When I’m looking at a graph displayed on the brilliant Viewsonic monitor I’m using at work, the same relatively intense colours that work well in a dot plot start to bother me in a bar graph. Take the bar graph immediately below for example. The colour choice is not a bad one, but there’s something about the intensity of the colours that makes me want to find a new set of colours somewhat more soothing to my eyes.
The first resource I found was a “Color Encyclopedia” website called Color Hex and started looking for colours that seemed more soothing and could be used to compare 3 bars against one another in a bar graph. You can search for colour names, colours according to their hexadecimal values, or even browse their list of “web safe colors”. I stumbled upon the particular purple displayed in the graph below, and it simply gave me the other colours in the triad as suggestions.
Looking at this triad of colours, I’m actually quite pleased, but I still didn’t really understand why these colours worked, and how to select a new triad that didn’t bother me. I shuffled through many different colours on the Color Hex website, and nothing else seemed to work with me as I wasn’t selecting colours based on any theory.
Then I stumbled upon an article by the good people at Perceptual Edge. They seemed to confirm my earlier statement about the same intense colours working well when used to colour dot plots not working so well in bar plots. Their solution is a simple one: choose from a list of colours of medium intensity. On page 6 of the document linked above, they offer 8 different hues that look nice in a bar plot. All I had to do to use these colours in the below plots was take a screenshot of the document, bring it into Inkscape, and hover the eye-dropper tool over the colours to get the hexadecimal colour values. If you’re interested in using the values, I typed them out at the bottom of my post. Now take a look at the graphs below:
The two graphs above follow the same principle that I had unknowingly touched upon when I chose the colours from the Color Hex website: stick with medium intensity, and your eyes won’t be jarred by the colour contrast. I like that!
Anyway, below I show you the code I used to manually input the hexadecimal colour values into my ggplot bar graphs, and the list of 8 hexadecimal colour values corresponding with the colour boxes on page 6 of the Perceptual Edge document. The variables a, c, and b were just variable names from a mock data frame that I cooked up for the purpose of the plots.
> colours = c(“#599ad3”, “#f9a65a”, “#9e66ab”)
> ggplot(e, aes(x=a, y=c, fill=b, stat=”identity”)) + geom_bar(position=”dodge”) + coord_flip()+scale_fill_manual(values=colours)