# Install packages
if (!requireNamespace("data.table", quietly = TRUE)) {
install.packages("data.table")
}if (!requireNamespace("jsonlite", quietly = TRUE)) {
install.packages("jsonlite")
}if (!requireNamespace("ggplot2", quietly = TRUE)) {
install.packages("ggplot2")
}
# Load packages
library(data.table)
library(jsonlite)
library(ggplot2)
Interval Area Chart
Setup
System Requirements: Cross-platform (Linux/MacOS/Windows)
Programming language: R
Dependent packages:
data.table
;jsonlite
;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.table::fread(jsonlite::read_json("https://hiplot.cn/ui/basic/interval-area-chart/data.json")$exampleData$textarea[[1]])
data <- as.data.frame(data)
data
# Convert data structure
"month"]] <- factor(data[["month"]], levels = data[["month"]])
data[[
# 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
<- ggplot(data, aes(x = month, group = 1)) +
p 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
