r - 如何在 R [xts] 中绘制某些列?

标签 r xts zoo graphing

我有一些数据,如下所示: /image/TjJ9k.jpg

我正在使用以下方法绘制它:

plot(fifty_twoweekmovavg)
pdf("52_week_moving_average_chartNSW.pdf",onefile=TRUE)
addLegend("topleft",lty = 1,cex=1.2)
dev.off()

如何绘制它以便只包含几个变量? 例如。绘制新南威尔士州价格和煤炭价格随时间变化的图,而不是绘制每个变量随时间变化的图?

谢谢

可重现的示例:

NSW1.Price Black.Coal Gas Hydro Liquid.Fuel 2011-01-01 30.89336 32.33668 41.63653 69.82661 108.06855 2011-01-08 30.98103 32.24805 41.33295 69.44308 104.36587 2011-01-15 30.73076 32.11497 40.76273 69.59129 97.30812 2011-01-22 30.76028 30.50381 36.56215 62.50329 61.78828 2011-01-29 29.76733 34.65090 43.94289 93.20954 113.42410

编辑2,我如何创建数据:

mydata=read.csv(file="nem_tech_dataTAS.csv") library(xts) library(zoo) date <- seq(from=as.POSIXct("2010-01-01 00:30", format = "%Y-%m-%d %H:%M"), length.out = nrow(mydata), by = "30 min") mydata_dated <- xts(mydata, date) fifty_twoweekmovavg=rollapply(mydata_dated,17520,mean,by = 336,na.pad = FALSE)

Edit3,图例格式:

当前图例:legend1

所需图例:legend2

最佳答案

如果已加载包xts,则可以使用plot 命令绘制xts 对象。有关如何绘制 xts 对象的更多详细信息,请使用 ?plot.xts

要仅选择 2 列,您可以在 xts 对象内使用 grep

library(xts)

plot(fifty_twoweekmovavg[, grep("NSW1|Coal", names(fifty_twoweekmovavg))],
     legend(grep("NSW1|Coal", names(fifty_twoweekmovavg))),
     main = "52_week_moving_average",
     legend.loc = "topleft")

编辑: 操纵图例,这会更容易,并且会产生相同的图,但图例用线条而不是方 block :

plot(fifty_twoweekmovavg[, grep("NSW1|Coal", names(fifty_twoweekmovavg))],
     main = "52_week_moving_average")

# on = 1 is for main plot. lty is for showing a line in the legend.
# see ?addLegend and ?legend
addLegend("topleft", on = 1, lty=1)

enter image description here

关于r - 如何在 R [xts] 中绘制某些列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54100884/

相关文章:

read_excel 不会修剪空格

r - R 中的 Predict.lm() - 如何在拟合值周围获得非常量的预测带

R使用quantmod获取行名日期

r - xts 合并奇怪的行为

r - 如何找到与给定日期最接近的日期?

删除具有连续相似数据的行 - R Zoo

在变量幂集中运行线性模型

即使过度分配,也可以检索原始版本的包功能

R: index() 或 index.xts() 改变时间序列的 Date 值,为什么?

r - 在 R 中包含 zoo 包时出错