重命名R语言AAPL股票日期索引列 用于ggplot绘图X轴
问题解决:R提取AAPL股票日期列并用ggplot绘制时间序列
错误原因
你编写的代码未生效的核心原因有两个:
- R语言的向量、数据框索引从1开始计数,你使用
colnames(AAPL)[0]指定第0列属于无效操作,自然无法修改目标列名称 getSymbols默认返回xts格式的时间序列对象,日期本身存储为对象的索引属性,不需要手动提取行名转换,有更简洁的处理方法- 额外小问题:你原有代码中安装包和加载包的顺序颠倒,应该先安装再加载包
解决方法
方法1:修复原有代码
把修改列名的索引从0改为1,同时将日期列转为日期格式,避免ggplot无法识别时间维度:
# 原有逻辑调整 AAPL <- cbind(rownames(AAPL), AAPL) rownames(AAPL) <- NULL # 修改第一列的列名 colnames(AAPL)[1] <- 'Dates' # 转换为日期格式 AAPL$Dates <- as.Date(AAPL$Dates)
方法2(更推荐):直接获取适配ggplot的tidy格式数据
tidyquant自带的tq_get()函数会直接返回带日期列的规整数据框,无需额外处理索引:
# 先安装加载包 install.packages("tidyquant") library(tidyquant) library(ggplot2) # 获取2021年全年AAPL股票数据,直接返回tidy格式 AAPL_tidy <- tq_get("AAPL", from = "2021-01-01", to = "2021-12-31") # ggplot绘制收盘价时间序列 ggplot(AAPL_tidy, aes(x = date, y = close)) + geom_line(color = "#165DFF", linewidth = 0.8) + labs(title = "2021年苹果公司(AAPL)股价走势", x = "日期", y = "收盘价(美元)") + theme_minimal()
如果你已经用getSymbols拿到了xts格式的AAPL对象,也可以用一行代码快速转成带日期列的数据框:
AAPL_df <- fortify.zoo(AAPL) colnames(AAPL_df)[1] <- "Dates"
内容的提问来源于stack exchange,提问作者lams
相关产品推荐
相关产品推荐

