Interval Area Chart

Authors

[Editor] Hu Zheng;

[Contributors]

Setup

  • System Requirements: Cross-platform (Linux/MacOS/Windows)

  • Programming language: R

  • Dependent packages: ggplot2

# Install packages
if (!requireNamespace("ggplot2", quietly = TRUE)) {
  install.packages("ggplot2")
}

# Load packages
library(ggplot2)

Data Preparation

The case data consists of the highest and lowest temperatures for each of the twelve months in a year, along with the corresponding abbreviated month names. Based on the case data, temperature intervals and average temperature lines have been plotted for each month.

# Load data
data <- read.delim("files/Hiplot/089-interval-area-chart-data.txt", header = T)

# Convert data structure
data[["month"]] <- factor(data[["month"]], levels = data[["month"]])

# View data
head(data)
  month min_temperature max_temperature mean
1   Jan              15              20   16
2   Feb              17              25   20
3   Mar              20              26   23
4   Apr              25              30   27
5   May              30              35   32
6   Jun              32              35   34

Visualization

# Interval Area Chart
p <- ggplot(data, aes(x = month, group = 1)) +
  geom_line(aes(y = max_temperature), size = 1.2, color = "#EA3323", 
            linetype = "solid") +
  geom_line(aes(y = min_temperature), size = 1.2, color = "#0000F5", 
            linetype = "solid") +
  geom_line(aes(x = month, y = mean), size = 1.2, color = "#BEBEBE", 
            linetype = "dashed") +
  geom_ribbon(aes(ymin = min_temperature, ymax = max_temperature), 
              fill = "#F2F2F2", alpha = 0.5) +
  geom_text(aes(x = month, y = max_temperature + 1, label = max_temperature),
            color = "#EA3323", size = 2.5, vjust = -0.5, hjust = 0) +
  geom_text(aes(x = month, y = min_temperature - 1, label = min_temperature),
            color = "#0000F5", size = 2.5, vjust = 1.5, hjust = 0) +
  geom_text(aes(x = month, y = mean, label = mean),
            color = "#BEBEBE", size = 2.5, vjust = 1.5, hjust = 0) +
  labs(title = "Temperature", x = "Month", y = "Temperature") +
  scale_color_manual(values = c(max = "#EA3323", min = "#0000F5")) +
  theme_bw() +
  theme(plot.title = element_text(hjust = 0.5))

p
FigureΒ 1: Interval Area Chart