• 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
  • Python Viz
  • Seaborn
  • Altair
  • R Viz
  • ggplot2
  • About
    • Privacy Policy
  • Show Search
Hide Search

How to Add matching colors to keywords in title text

datavizpyr · July 9, 2024 ·

In this tutorial, we will learn how to color select words in title text with matching colors as in the plot made with ggplot. For example, if we had made a bar plot with two colors for two groups with ggplot2, we will learn how to color the group names in the title text with the same colors as in the bars.

This will help improve our ability to interpret the plot easily without need for additional legends for the colors used. We will Rcolorbrewer to find the right color codes usied in the plot and use ggtext, a R package to color the words in the title text.

Let us load the packages needed. We will use real stock market data to make the plots. We will use the R package tidyquant to get the stock market data.

library(ggtext)
library(RColorBrewer)
library(tidyverse)
theme_set(theme_bw(16))

Let us make a grouped barplot showing the yearly returns of Google and S&P 500 index. First, we will download the daily stock price data for these two tickers using tidyquant’s tq_get() function for the time interval of interest.

stock_tickers = c("SPY","GOOG")
stock_df <- stock_tickers |>
  tq_get(from = "2021-01-01", to=Sys.Date()) 

The downloaded stock price data looks like this.

stock_df %>% head()

# A tibble: 6 × 8
  symbol date        open  high   low close    volume adjusted
  <chr>  <date>     <dbl> <dbl> <dbl> <dbl>     <dbl>    <dbl>
1 SPY    2021-01-04  375.  375.  365.  369. 110210800     351.
2 SPY    2021-01-05  368.  372.  368.  371.  66426200     353.
3 SPY    2021-01-06  370.  377.  369.  374. 107997700     355.
4 SPY    2021-01-07  376.  380.  376.  379.  68766800     360.
5 SPY    2021-01-08  381.  381.  377.  381.  71677200     362.
6 SPY    2021-01-11  378.  381.  378.  379.  51034700     360.

We will compute annual returns for these two stock tickers using tq_transmute() function in tidyquant.

yearly_return <- stock_df |>
  group_by(symbol) |>
  tq_transmute(select     = adjusted,
               mutate_fun = periodReturn,
               period     = "yearly") |>
  ungroup()
yearly_return %>% head()

# A tibble: 6 × 3
  symbol date       yearly.returns
  <chr>  <date>              <dbl>
1 SPY    2021-12-31          0.305
2 SPY    2022-12-30         -0.182
3 SPY    2023-12-29          0.262
4 SPY    2024-07-05          0.174
5 GOOG   2021-12-31          0.674
6 GOOG   2022-12-30         -0.387

How to add matching colors to select text in title

Let us make a grouped barplot with year on x-axis and returns on y-axis. We have colored the bars using scale_fill_brewer() with Dark2 palette.

yearly_return %>%
  ggplot(aes(x=year(date), y=yearly.returns, fill=symbol))+
  geom_col(position="dodge")+
  scale_y_continuous(breaks=scales::breaks_pretty(6),
                     labels = scales::percent_format())+
  scale_fill_brewer(palette="Dark2")+
  labs(x=NULL,
       title="Yearly Returns: S&P 500 vs Alphabet")
ggsave("How_to_add_matching_color_to_keywords_in_ggplot2_title.png")

Note the title text contains the two tickers name.

How to add matching colors to keywords in ggplot2 title text
How to add matching colors to keywords in ggplot2 title text

Getting color codes with brewer.pal()

To add matching colors to the names of the tickers in the title text, let first find what color codes we used to colr the bars. We can use RColoBrewer’s brewer.pal() function to get the color codes used in a palette.

my_colors <- brewer.pal(3,"Dark2")
my_colors[1]

Add matching colors to select text in title with ggtext

Now that we have the color codes needed, we can use the R package ggtext to specify the colors to the select keywords in the title. We will use the same approach as selectively coloring the title text, but this time with matching colors. Check out the special html-style code in the title section of the code below. In addition, we also need to add plot.title=element_markdown() to theme() and this renders the colors in the title text. Without adding ggtext’s element_markdown() we will not see the colors in the title instead we will see the actual html code.

yearly_return %>%
  ggplot(aes(x=year(date), y=yearly.returns, fill=symbol))+
  geom_col(position="dodge")+
  scale_y_continuous(breaks=scales::breaks_pretty(6),
                     labels = scales::percent_format())+
  scale_fill_brewer(palette="Dark2")+
  labs(x=NULL,
       title=paste0("Yearly Returns: <span style='color:",my_colors[1],"'>Alphabet </span> vs",
       "<span style='color:",my_colors[2], "'> S&P 500</span>")) +
  theme(plot.title = element_markdown(),
        legend.position="none")
ggsave("add_matching_colors_to_title_text_ggplot2.png")
Add matching colors to keywords in ggplot2 title text with ggtext
Add matching colors to keywords in ggplot2 title text with ggtext

Related posts:

Default ThumbnailHow to add color to axis tick labels: Hint – element_markdown() in ggtext 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? Scatterplot with marginal multi-histogram with ggExtraHow To Make Scatterplot with Marginal Histograms in R?

Filed Under: ggplot2, ggtext, R Tagged With: add matching color in title

Primary Sidebar

Tags

Altair barplot Boxplot boxplot python boxplot with jiitered text labels Bubble Plot Color Palette Countplot Density Plot Facet Plot gganimate ggplot2 ggplot2 Boxplot ggplot2 error ggplot boxplot ggridges ggtext element_markdown() Grouped Barplot R heatmap heatmaps Histogram Histograms Horizontal boxplot Python lollipop plot Maps Matplotlib Pandas patchwork pheatmap Pyhon Python R RColorBrewer reorder boxplot ggplot Ridgeline plot Scatter Plot Scatter Plot Altair Seaborn Seaborn Boxplot Stock Price Over Time Stripplot UpSetR Violinplot Violin Plot World Map ggplot2

Buy Me a Coffee

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

Go to mobile version