• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar

Data Viz with Python and R

Learn to Make Plots in Python and R

  • Home
  • Seaborn
  • Matplotlib
  • ggplot2
  • Altair
  • About
    • Privacy Policy
  • Visualizing Activation Functions in Neural Networks
  • Confusion Matrix Calculator
  • Visualizing Dropout Rate in Neural Network
  • Visualizing Loss Functions in Neural Networks
  • Show Search
Hide Search

How to add color to axis tick labels: Hint – element_markdown() in ggtext

datavizpyr · August 26, 2022 ·

In this tutorial, we will learn about a nice ggplot2 trick/tip that enables colored text on axis tick labels. Thanks to new theme element element_markdown() in ggtext, R package developed by Claus Wilke, we can add colors to axis text labels.

Colorize axis tick labels with ggtext
Colorize axis tick labels with ggtext

To get started, let us load the packages needed. Here we use ggtext version 0.1.1.

library(tidyverse)
theme_set(theme_bw(16))
library(gapminder)
library(ggtext)
packageVersion("ggtext")

## [1] '0.1.1'

We will use gapminder data to make a barpot and show how to add colors to axis tick label.

gapminder %>% 
  head()

## # A tibble: 6 × 6
##   country     continent  year lifeExp      pop gdpPercap
##   <fct>       <fct>     <int>   <dbl>    <int>     <dbl>
## 1 Afghanistan Asia       1952    28.8  8425333      779.
## 2 Afghanistan Asia       1957    30.3  9240934      821.
## 3 Afghanistan Asia       1962    32.0 10267083      853.
## 4 Afghanistan Asia       1967    34.0 11537966      836.
## 5 Afghanistan Asia       1972    36.1 13079460      740.
## 6 Afghanistan Asia       1977    38.4 14880372      786.

To make a barplot let us summarize gapminder data get average life expectancy per continent.

data <- gapminder %>%
  group_by(continent) %>%
  summarize(ave_lifeExp=mean(lifeExp)) 

data

## # A tibble: 5 × 2
##   continent ave_lifeExp
##   <fct>           <dbl>
## 1 Africa           48.9
## 2 Americas         64.7
## 3 Asia             60.1
## 4 Europe           71.9
## 5 Oceania          74.3

Barplot colored by variable

Let us go ahead and make a barplot using geom_col(). Here we also customize the plot by reordering the bars by ave lifeExp, added colors to bars, added a title and a caption.

data %>%
  ggplot(aes(y=fct_reorder(continent,ave_lifeExp), x=ave_lifeExp, fill=continent))+
  geom_col(alpha=0.8)+
  labs(y=NULL, title="Average life expectancy per continent",
       caption="data: gapminder")+
  theme(legend.position="none")
ggsave("how_to_add_colors_to_axis_tick_labels.png")

Our barplot looks great. However note that the y-axis tick labels naming the continents are grey color by default.

How to add matching colors to axis tick labels
How to add matching colors to axis tick labels

How to add color to axis tick labels with ggtext

element_markdown(), a new theme element available in the ggtext can render the axis text label as as markdown or html. Basically, element_markdown() is a replacement for element_text().

Let us prepare our data to add color to axis tick label. For that, we modify our dataframe to contain a column with colors we would like to use for each continent. And then create a new column with html code to colorize our continent variable.

data %>% 
  mutate(
    color = c("#FF0000", "#000000",  "#D55E00", "#009E73","#FF00FF"),
    name = paste0("<i style='color:",color,"'>", continent,"</i>"),
    name = fct_reorder(name, ave_lifeExp)) %>%
  head()

The modified dataframe looks like this.

## # A tibble: 5 × 4
##   continent ave_lifeExp color   name                                 
##   <fct>           <dbl> <chr>   <fct>                                
## 1 Africa           48.9 #FF0000 <i style='color:#FF0000'>Africa</i>  
## 2 Americas         64.7 #000000 <i style='color:#000000'>Americas</i>
## 3 Asia             60.1 #D55E00 <i style='color:#D55E00'>Asia</i>    
## 4 Europe           71.9 #009E73 <i style='color:#009E73'>Europe</i>  
## 5 Oceania          74.3 #FF00FF <i style='color:#FF00FF'>Oceania</i>

Now we can go ahead and make the bar plot with the new variable containing html code for continent variable. Note we have added theme() layer with element_markdown() for y axis text.

data %>% 
  mutate(
    color = c("#FF0000", "#000000",  "#D55E00", "#009E73","#FF00FF"),
    name = paste0("<i style='color:",color,"'>", continent,"</i>"),
    name = fct_reorder(name, ave_lifeExp)) %>%
  ggplot(aes(ave_lifeExp, name, fill = color)) + 
  geom_col(alpha=0.7) + 
  scale_fill_identity() +
  labs(y=NULL, title="Average life expectancy per continent",
       caption="source: gapminder")+
  theme(
    #customize tick label with element_markdown()
    axis.text.y = element_markdown(face="bold")
  )
ggsave("add_color_to_axis_tick_labels_ggtext.png")

Voila, now our barpot’s y-axis tick labels has some colors and it is the same as the colors we filled the bars with.

Adding colors to axis tick labels with ggtext
Adding colors to axis tick labels with ggtext

Explore the Complete ggplot2 Guide

35+ tutorials with code: scatterplots, boxplots, themes, annotations, facets, and more—tested and beginner-friendly.

Visit the ggplot2 Hub → No fluff—just code and visuals.

Related posts:

How to add colors to axis tick labels using ggtext?How to Add Colors to Axis Tick Label in ggplot2 Add matching colors to keywords in ggplot2 title text with ggtextHow to Add matching colors to keywords in title text Annotate a plot with p-value from linear regression model in ggplot2: Example 2How to Annotate a plot with P-value in ggplot2 Customizing Mean mark to boxplot with ggplot2How To Show Mean Value in Boxplots with ggplot2?

Filed Under: ggplot2, ggtext, R Tagged With: add color to axis text label ggplot2, ggtext element_markdown()

Primary Sidebar

Python & R Viz Hubs

  • Seaborn Guide & Cookbook
  • ggplot2 Guide & Cookbook
  • Matplotlib Guide & Cookbook
  • Confusion Matrix Calculator
  • Visualizing Activation Functions
  • Visualizing Dropout
  • Visualizing Loss Functions

Buy Me a Coffee

Copyright © 2026 · Daily Dish Pro on Genesis Framework · WordPress · Log in

Go to mobile version