Home > Net >  How to use another variable values as labels on date x-axis in ggplot?
How to use another variable values as labels on date x-axis in ggplot?

Time:10-22

I have created a ggplot using date x axis but I would like to show their values from another variable instead of dates.

df

library(tidyverse)
library(lubridate)


df <- read_rds("https://github.com/johnsnow09/covid19-df_stack-code/blob/main/vaccine_milestones.rds?raw=true")
df

  Updated.On cr_bin days_to_next_10cr_vacc
  <date>     <fct>  <drtn>                
1 2021-04-11 10 Cr  85 days               
2 2021-05-27 20 Cr  46 days               
3 2021-06-24 30 Cr  28 days               
4 2021-07-18 40 Cr  24 days               
5 2021-08-06 50 Cr  19 days               
6 2021-08-25 60 Cr  19 days               
7 2021-09-07 70 Cr  13 days               
8 2021-09-18 80 Cr  11 days               
9 2021-10-02 90 Cr  14 days 
df %>% 
ggplot(aes(x = Updated.On, y = days_to_next_10cr_vacc))  
  geom_col()  
  scale_x_date(aes(labels = cr_bin))

Also tried: scale_x_date(aes(labels = c("10","20","30","40","50","60","70","80","90")))

enter image description here

In the plot on the x axis I would like to have values displayed from cr_bin instead of dates as 10 Cr, 20 cr, 30 Cr ... so on 90 Cr.

I have tried above code but I am not sure what else to use in place of labels to get desired results

CodePudding user response:

You need to set breaks for labels. I'm using unique, just in case there might be duplicate rows.

Also note conversion off difftime to integer.

library(tidyverse)
library(lubridate)

df <- read_rds("https://github.com/johnsnow09/covid19-df_stack-code/blob/main/vaccine_milestones.rds?raw=true")

df %>% 
  ggplot(aes(x = Updated.On, y = as.integer(days_to_next_10cr_vacc)))  
  geom_col()  
  scale_x_date(breaks = unique(df$Updated.On), labels = unique(df$cr_bin))

Created on 2021-10-21 by the reprex package (v2.0.1)

  • Related