搜索
人大经济论坛 附件下载

附件下载

所在主题:
文件名:  SHDX2017.rar
资料下载链接地址: https://bbs.pinggu.org/a-2409258.html
本附件包括:
  • SHDX2017.RData
附件大小:
首先,为什么要用ggplot2来画K线图,不是有quantmod包和chartSeries()等函数吗?
这是因为:第一,quantmod包的画图对我来说没有足够的灵活性,我不能很自如地控制每一个要素,添加我想要的东西;第二,quantmod包的分析是基于xts的时间序列对象,而在日常工作中,已经习惯了用tbl_df体系,也确实好用,而该体系的作图对应的就是ggplot2这一强大的工具。
好了,不说废话了,直接开始。
数据是2017年上证综指每日的开盘,最高,最低、收盘和成交量数据,在这个文件中,变量名"SHDX2017"。

开始作图:
  1. library(tidyverse)
  2. library(gridExtra)
  3. library(quantmod)# 要用到SMA函数

  4. # 为了解决日期作为横坐标会出现休市日的情况,需要以下的变量辅助
  5. row_len <- nrow(SHDX2017)
  6. breaks <- seq(1, row_len, 10)
  7. labels <- SHDX2017$date[breaks]

  8. # 作K线图
  9. p1 <- SHDX2017 %>%
  10. arrange(date) %>%
  11. mutate(ma5 = SMA(close, n = 5, align ="right"),
  12. ma10 = SMA(close, n = 10, align = "right"),
  13. date_axis = row_number()) %>%
  14. ggplot(aes(x = date_axis)) +
  15. geom_boxplot(aes(lower = pmin(close, open),
  16. middle = close,
  17. upper = pmax(close, open),
  18. ymin = low,
  19. ymax = high,
  20. group = date_axis,
  21. fill = open > close),
  22. stat = "identity",
  23. show.legend = FALSE) +
  24. geom_line(aes(y = ma5), color = "blue3") +
  25. geom_line(aes(y = ma10), color = "red") +
  26. scale_x_continuous(breaks = breaks,
  27. labels = NULL,
  28. expand = c(0, 0)) +
  29. theme(axis.ticks.x = element_blank(),
  30. axis.title = element_blank(),
  31. axis.text.y = element_text(margin = margin(l = 8)))

  32. # 作成交量图
  33. p2 <- SHDX2017 %>%
  34. arrange(date) %>%
  35. mutate(vol_ma5 = SMA(volume, n = 5, align ="right"),
  36. vol_ma10 = SMA(volume, n = 10, align = "right"),
  37. date_axis = row_number()) %>%
  38. ggplot(aes(x = date_axis, y = volume)) +
  39. geom_bar(stat = "identity",
  40. aes(fill = open > close),
  41. show.legend = FALSE) +
  42. geom_line(aes(y = vol_ma5), color = "blue3") +
  43. geom_line(aes(y = vol_ma10), color = "red") +
  44. scale_x_continuous(breaks = breaks,
  45. labels = format(labels, "%m-%d"),
  46. expand = c(0, 0)) +
  47. scale_y_continuous(expand = c(0, 0.5)) +
  48. theme(axis.title = element_blank())

  49. # 组合
  50. grid.arrange(p1, p2, nrow = 2, heights = 2:1)
复制代码

作出的图像这样:





    熟悉论坛请点击新手指南
下载说明
1、论坛支持迅雷和网际快车等p2p多线程软件下载,请在上面选择下载通道单击右健下载即可。
2、论坛会定期自动批量更新下载地址,所以请不要浪费时间盗链论坛资源,盗链地址会很快失效。
3、本站为非盈利性质的学术交流网站,鼓励和保护原创作品,拒绝未经版权人许可的上传行为。本站如接到版权人发出的合格侵权通知,将积极的采取必要措施;同时,本站也将在技术手段和能力范围内,履行版权保护的注意义务。
(如有侵权,欢迎举报)
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

GMT+8, 2026-1-1 02:50