使用ts()转换日度数据出错,R绘制CCMP指数图表异常求助
问题排查与解决方法
核心错误点
你用ts()函数处理日度数据的方式完全错误:
ts对象设计用于月度、季度这类固定频率的规则时间序列,不适合非连续的日度数据。- 设置
frequency=365会让R强制把每年拆成365个时间点,自动填充缺失日期的空值,导致原本的价格数据被错位映射,最终图表走势完全失真。
修正方案
不需要转成ts对象,直接用你已经处理好的time(Date类型)列绘图,两种简单方法:
方法1:基础绘图快速修正
ccmp <- read.csv("/Users/jackconnors/Downloads/yeet.csv") ccmp$time <- as.Date(ccmp$date, format = "%m/%d/%Y") ccmp <- ccmp[order(ccmp$time), ] # 直接基于Date列绘制折线图 plot(ccmp$time, ccmp$price, xlab="Year", ylab="Price", main="CCMP Price", lwd=2.5, type="l")
注:加type="l"指定绘制折线,默认是散点图
方法2:用ggplot2绘制更专业的图表
如果需要更美观的日期轴和样式,推荐用ggplot2:
# 首次使用先安装包 install.packages("ggplot2") library(ggplot2) ggplot(ccmp, aes(x = time, y = price)) + geom_line(linewidth = 2.5) + labs(x = "Year", y = "Price", title = "CCMP Price") + theme_minimal()
为什么Excel显示正常?
Excel会自动识别Date类型列,按实际存在的日期顺序绘图,不会强制填充缺失的日期点,因此能正确还原指数的下跌走势。
异常图表参考

内容的提问来源于stack exchange,提问作者Jack
相关产品推荐
相关产品推荐

