❝本节来介绍使用ggplot2绘制多组面积线图来展示趋势变化,下面小编就通过一个案例来进行展示,数据无实际意义仅作图形展示用,希望各位观众老爷能够喜欢。❞
library(tidyverse)
library(patchwork)
library(janitor)
library(glue)
library(ggtext)
prices <- read_csv('prices.txt')
companies <- read_csv('companies.txt')
df_base <- map_dfr(unique(prices$stock_symbol), ~{
# 对 prices 数据进行变换,添加 group 和 stock_symbol 列
prices |>
mutate(
group = stock_symbol, # 将 group 列设为 stock_symbol 的值
stock_symbol = .x # 将 stock_symbol 列设为当前迭代的值 .x
)
}) |>
# 使用 stock_symbol 列将 df_base 和 companies 进行左连接操作
left_join(companies,by="stock_symbol")
df_base |>
ggplot() +
# 添加线图,使用 date 作为 x 轴,close 作为 y 轴,group 列用于区分不同的股票
geom_line(aes(date, close, group = group),alpha = 0.5,size = 0.1,colour = "grey") +
# 添加面积图,使用 date 作为 x 轴,close 作为 y 轴,stock_symbol 用于颜色和填充
geom_area(aes(date, close, colour = stock_symbol, fill = stock_symbol),
prices, alpha = 0.2, size = 0.5) +
# 使用 stock_symbol 进行分面展示,每行显示4个
facet_wrap(~stock_symbol, ncol = 4) +
scale_colour_manual(values = pal) +
scale_fill_manual(values = pal) +
theme_test() +
theme(
text = element_text(size =, lineheight = 0.3, colour = "white"),
plot.margin = margin(b = 8, t = 8, r = 8, l = 8),
axis.text = element_text(size =9,color="black"),
strip.text = element_text(size=10,face="bold"),
strip.background = element_blank(),
panel.spacing.x = unit(0.2,"cm"),
legend.position = "none")