Code To replicate the results from the dataset, here's a short demo R code for loading the dataset and plotting the monthly variations: # Step 1) Read the data set # Loading the required libraries library(dplyr) library(RColorBrewer) library(ggplot2) library(ggthemes) library(grid) library(gridExtra) library(extrafont) dat <- read.csv("http://macrofinance.nipfp.org.in/AirQuality.csv") # Step 2) Calculating the average PM2.5 concentration by day and hour dat.weekly <- dat %>% group_by(days, hour) %>% summarise(avgpm2 = mean(value, na.rm=TRUE)) dat.weekly$days <- factor(dat.weekly$days, levels=c("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday")) dat.weekly <- dat.weekly[order(dat.weekly$days), ] # Step 3) Plotting Figure 1 of the paper gg <- ggplot(dat.weekly, aes(x=hour, y=days, fill=avgpm2)) + geom_tile(color="white", size=0.04) + scale_fill_gradientn(name="PM 2.5 Conc.", colours=brewer.pal(9, "Greys")) + coord_equal() + labs(x="Hours", y=NULL) + scale_x_discrete(limits=0:23) + theme(plot.margin=grid::unit(c(0,0,0,0), "mm"))+ theme_tufte(base_family="Helvetica") + theme(axis.ticks=element_blank(), text=element_text(size=8, family="serif")) + theme(axis.text=element_text(size=8)) + theme(legend.title=element_text(size=10)) + theme(legend.text=element_text(size=10)) The above code replicates the Figure 1 from the paper. Insert Image Here