上次搞定了R语言对一列的值做emd然后输出所有imf的组合图,下面尝试处理多列数值。
#绘制所有省份最高值的最后一个IMF
# 读取数据
load <- data.frame(read.csv("最高.csv"))
# 取对数 length(load) load[,2:length(load)] <- log(load[,2:length(load)]) 最后的表的标题
title <- "全省区最高值最后一个IMF"
# emd循环 创建一个用于存储图表的list
plotlist <- list()
for (i in 2:length(load)) {
# emd计算
emd <- emd(xt = load[, i], boundary = "wave", stoprule = "type5")
# 选择绘制IMF并存储!!!在此处选择绘制哪一条曲线
emdframe <- data.frame(Time = load[, "日期"], EMD = emd$imf[, emd$nimf])
plotlist[[i - 1]] <- ggplot(data = emdframe, aes(x = Time, y = EMD)) + geom_hline(yintercept = 0, colour = "red") + geom_line(size = 0.5) + labs(x = paste("IMF", emd$nimf), y = colnames(load[i]))
}
# 绘制组合图
totalplot <- cowplot::plot_grid(plotlist = plotlist, ncol = floor(sqrt(length(load) - 1)))
# now add the title
titleplot <- ggdraw() + draw_label(title, fontface = "bold")
finalplot <- plot_grid(titleplot, totalplot, ncol = 1, rel_heights = c(0.05, 1)) # rel_heights values control title margins
finalplot
#全省区最高值原值