暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

R语言绘图|多重折线图与堆积面积图

4102
点击关注了解更多哦

本文主要介绍如何利用ggplot2绘制多重折线图堆积面积图。效果如下图所示:

1、数据准备

pedquant包中的dt_banks数据集为例,该数据集包含我国五大行2008-2017年股价数据,绘制不同银行股价在该时间段内的折线图与面积图。

library(pedquant)
library(ggplot2)
library(dplyr)
dt_banks <- pedquant::dt_banks
table(dt_banks$name) %>% as.data.frame()
       Var1 Freq
#1  DR交通银    1
#2     N农行    1
#3  XD工商银   10
#4  XD建设银   11
#5  XD交通银   12
#6  XD农业银    7
#7  XD中国银   10
#8  XR工商银    1
#9  XR建设银    1
#10 XR交通银    1
#11 XR中国银    1
#12 工商银行 2405
#13 建设银行 2407
#14 交通银行 2405
#15 农业银行 1804
#16 中国银行 2407

#名称合并
dt_banks$name <- ifelse(dt_banks$name %in% c("DR交通银","XD交通银""XR交通银") ,"交通银行", dt_banks$name)
dt_banks$name <- ifelse(dt_banks$name %in% c("XR中国银","XD中国银"), "中国银行", dt_banks$name)
dt_banks$name <- ifelse(dt_banks$name %in% c("XR工商银","XD工商银"), "工商银行", dt_banks$name)
dt_banks$name <- ifelse(dt_banks$name %in% c("XD建设银","XR建设银"), "建设银行", dt_banks$name)
dt_banks$name <- ifelse(dt_banks$name %in% c("XD农业银","N农行"), "农业银行", dt_banks$name)
table(dt_banks$name) %>% as.data.frame()
#      Var1 Freq
#1 工商银行 2416
#2 建设银行 2419
#3 交通银行 2419
#4 农业银行 1812
#5 中国银行 2418

#转换为标准时间
dt_banks$date <- lubridate::parse_date_time(dt_banks$date"%y-%m-%d"
#提取数据
banks.df <- dt_banks %>% filter(name %in% c("交通银行""中国银行""工商银行""建设银行"))
head(banks.df)
#      symbol     name       date open high  low close close_prev change_pct    volume     amount turnover   cap_market    cap_total unit
#1: 601328.SS 交通银行 2010-01-04 9.40 9.44 9.14  9.16       9.35    -2.0321 114165487 1058538519   0.7156 146147185538 448788554719  CNY
#2: 601328.SS 交通银行 2010-01-05 9.19 9.52 9.12  9.39       9.16     2.5109 155501284 1453744070   0.9746 149816820109 460057262971  CNY
#3: 601328.SS 交通银行 2010-01-06 9.30 9.50 9.23  9.26       9.39    -1.3845 100955105  943772567   0.6328 147742678830 453687993090  CNY
#4: 601328.SS 交通银行 2010-01-07 9.23 9.27 8.90  8.94       9.26    -3.4557 123883509 1124824187   0.7765 142637100296 438009790305  CNY
#5: 601328.SS 交通银行 2010-01-08 8.90 9.11 8.85  8.99       8.94     0.5593  81152598  730689208   0.5086 143434846942 440459509490  CNY
#6: 601328.SS 交通银行 2010-01-11 9.77 9.77 8.96  9.00       8.99     0.1112 150314586 1397224349   0.9421 143594396271 440949453327  CNY

2、图形绘制

2.1 基础图形

date(日期)为x轴变量,close(收盘价)为y轴变量,name(名称)为fillcolor映射变量,绘制多重折线图与堆积面积图。

#设置主题
theme_set(theme_minimal() + theme(legend.position = c(0.85, 0.85), legend.title = element_blank()))

#多重折线图
ggplot(banks.df, aes(date, close, color = name)) + 
  geom_line()
#堆积面积图
ggplot(banks.df, aes(date, close, fill = name)) + 
  geom_area()

2.2 图形修饰

对绘图函数做进一步调整。

#多重折线图
ggplot(banks.df, aes(date, close, color = name)) + 
  geom_line(lwd = 1.2, linetype = 1) + 
  scale_y_continuous(breaks = seq(0, 16, 2)) + 
  scale_x_datetime(date_breaks = "1 year", date_labels = "%Y", expand = c(0.01, 0)) + 
  scale_color_brewer(palette = "Set1")

#堆积面积图
ggplot(banks.df, aes(date, close, fill = name)) + 
  geom_area(color = alpha("black", 0.6)) + 
  scale_x_datetime(date_breaks = "1 year", date_labels = "%Y", expand = c(0.01, 0)) + 
  scale_fill_brewer(palette = "Set1")   

3、其他

关于R语言绘制面积图可进一步参考R语言绘图|面积图。其他绘图方法可进一步阅读公众号其他文章。


如有帮助请多多点赞哦!


文章转载自日常分享的小懒猫,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论