Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在R[xts]中绘制某些列?_R_Xts_Zoo_Graphing - Fatal编程技术网

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

如何在R[xts]中绘制某些列?,r,xts,zoo,graphing,R,Xts,Zoo,Graphing,我有一些数据如下所示: 我用以下方法绘制它: plot(fifty_twoweekmovavg) pdf("52_week_moving_average_chartNSW.pdf",onefile=TRUE) addLegend("topleft",lty = 1,cex=1.2) dev.off() 如何绘制它,以便只包含几个变量? 例如,绘制新南威尔士州价格和煤炭价格与时间的关系图,而不是绘制每个变量与时间的关系图 谢谢 可复制示例: NSW1。价格黑色。煤气加氢液体。燃料 2011-

我有一些数据如下所示:

我用以下方法绘制它:

plot(fifty_twoweekmovavg)
pdf("52_week_moving_average_chartNSW.pdf",onefile=TRUE)
addLegend("topleft",lty = 1,cex=1.2)
dev.off()
如何绘制它,以便只包含几个变量? 例如,绘制新南威尔士州价格和煤炭价格与时间的关系图,而不是绘制每个变量与时间的关系图

谢谢

可复制示例:


NSW1。价格黑色。煤气加氢液体。燃料
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

Edit2,我是如何创建数据的:


mydata=read.csv(file=“nem\u tech\u dataTAS.csv”)
图书馆(xts)
图书馆(动物园)

日期如果要绘制两条线来显示一段时间内的天然气和水力值,首先需要创建一个时间序列。创建获取日期的列,并使用
as.date
将其转换为日期格式。在上面的示例中,您可以写:

fifty_twoweekmovavg$date=as.Date(rownames(fifty_twoweekmovavg))
这将获得x轴值

现在,为了获得气体和水力的值,必须确保y轴同时适合它们,因为气体和水力的值不相交

一种方法是:

extents=range(c(fifty_twoweekmovavg$Gas,fifty_twoweekmovavg$Hydro))
设置日期和范围后,您可以最终继续绘制线:

plot(fifty_twoweekmovavg$date,fifty_twoweekmovavg$Gas,type='l',ylim=extents)
lines(fifty_twoweekmovavg$date,fifty_twoweekmovavg$Hydro,col='red')

下面的代码可以使用图形图例呈现具有多条线的绘图

df2 = data.frame(matrix(data=c(
30.89336,   32.33668, 41.63653,  69.82661,   108.06855,
30.98103,   32.24805, 41.33295,  69.44308,   104.36587,
30.73076,   32.11497, 40.76273,  69.59129,    97.30812,
30.76028,   30.50381, 36.56215,  62.50329,    61.78828,
29.76733,   34.65090, 43.94289,  93.20954,   113.42410
), ncol = 5, byrow = TRUE ))
colnames(df2) = c("NSW1.Price", "Black.Coal", "Gas", "Hydro", "Liquid.Fuel")
df1 = data.frame("time" = as.Date(
      c("2011-01-01",   
        "2011-01-08",   
        "2011-01-15",   
        "2011-01-22",   
        "2011-01-29"),"%Y-%m-%d"))
df = cbind(df1, df2)
plot(0, cex=0, xlim=range(df$time), 
     ylim=c(0,max(c(df$NSW1.Price, df$Black.Coal))))
lines(df$time, df$NSW1.Price, col="cyan", lty = 1)
lines(df$time, df$Black.Coal, col="black", lty=2)
legend("bottomleft", legend = c("NSW1.Price", "Black.Coal"), 
       col = c("cyan", "black"), lty = c(1,2))

如果已加载程序包
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")
编辑: 操作图例会更容易,并将生成相同的绘图,但图例使用线条而不是正方形:

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)

尝试使用
ggplot
进行绘图
plot(五十周OVAVG$Gas,五十周OVAVG$Hydro)
当我这样做时,它只绘制气体数据,而不绘制水力数据?您是否查看了
matplot
函数?我已经尝试了行,但我无法让它与我的图例一起工作?你能帮我解决一下吗谢谢,但是当我写你的第一行时,我得到了这样的信息:
>50weekMovavg$date=as.date(rownames(50weekMovavg))as.date.default(x…):不知道如何将“x”转换为类“date”
你能试试
str(50weekMovavg)吗
并复制粘贴您得到的内容。
2011-01-01/2018-12-29上的“xts”对象包含:Data:num[1:418,1:6]30.9 30.9 30.7 30.6 30.6…-attr(*,“dimnames”)=2..$:NULL..$:chr[1:6]“TAS1.价格”“天然气”“水力”“液体.燃料”。。。按类的对象编制索引:[POSIXct,POSIXt]TZ:xts Attributes:NULL
Ah,您可以显示用于创建xts对象的代码吗?也许对你有用。是的,这是原来的问题哦,太好了,我会试试这个完美的谢谢你,虽然我不完全理解“grep”是如何工作的一件小事,但我想修复它,如果我可以的话,是图例的格式。使用您的代码,我的图例有一个框,指示每种颜色,我最初有一条线指示每种颜色。为了说明这一点,我对上面的问题进行了编辑。如何使用线条格式而不是方框格式格式化图例?谢谢