我在一个表中有多个产品的每小时多个属性摘要。
我希望将它们绘制成一个面板,其中x轴代表时间,不同类型的产品有不同的颜色。
我的数据如下:
> require(data.table)
# Create some data
> dt<-data.table(type=c(rep("a",168),rep("b",168),rep("c",168)),
time=1:168,A=rnorm(168,10,5),B=rnorm(168,100,20),C=rnorm(168,10,5))
> DT #Each type has 1~168 hours summary of all three attributes
type time A B C
1: a 1 7.462817 119.91299 7.404987
2: a 2 7.733695 146.14601 -3.203601
3: a 3 19.034468 84.45497 9.623048
4: a 4 8.813990 123.21235 12.719920
5: a 5 16.803735 92.69359 11.393730
---
500: c 164 18.016771 90.29856 10.238281
501: c 165 6.566802 131.67801 -2.085370
502: c 166 20.031678 83.34749 12.261008
503: c 167 4.705976 109.76303 9.327958
504: c 168 8.648876 84.67477 19.036321
通过应用plot.zoo
,我可以像这样绘制一种类型的时间:
> setkey(DT,type)
> plot(zoo(DT["a"])[,3:5])
但是如何将所有产品绘制成一个不同颜色代表不同类型的面板?
编辑: 我认为我的原始问题可以解释为2个含义:如何将“A”,“B”,“C”(不同的列)放入一个面板中以及如何将“a”“b”“c”放入(不同的类型值)在行中)到一个面板。 @Joshua Ulrich和@Paul Hiemstra都回答了第一个问题,但我真正想知道的是第二个问题。 为了更好地理解,我重命名DT的副本名称
> names(DT)<-c("type","time","Attr1" ,"Attr2" , "Attr3" )
> DT
type time Attr1 Attr2 Attr3
1: a 1 7.462817 119.91299 7.404987
2: a 2 7.733695 146.14601 -3.203601
3: a 3 19.034468 84.45497 9.623048
4: a 4 8.813990 123.21235 12.719920
5: a 5 16.803735 92.69359 11.393730
---
500: c 164 18.016771 90.29856 10.238281
501: c 165 6.566802 131.67801 -2.085370
502: c 166 20.031678 83.34749 12.261008
503: c 167 4.705976 109.76303 9.327958
504: c 168 8.648876 84.67477 19.036321
我正在寻找的是一个带有3个面板的情节,每个面板代表一个属性(“Attr1”,“Attr2”,“Attr3”),在每个面板中,有几行(时间序列)用不同的颜色代表不同类型的数据(“a”,“b”,“c”)
对于以前的误导性内容感到抱歉
答案 0 :(得分:2)
使用screens
的{{1}}和col
参数:
plot.zoo
答案 1 :(得分:0)
我是一个很大的ggplot2
粉丝,所以我会用它来解决你的问题。请注意,我通常倾向于坚持正常的data.frame
,而不是data.table
结构。此外,ggplot2
要求数据结构稍微更改,我使用melt
中的reshape2
来执行此操作。
library(reshape2)
library(ggplot2)
df = as.data.frame(dt)
df_melt = melt(df, id.vars = c("type", "time"))
ggplot(df_melt, aes(x = time, y = value, color = variable)) + geom_line()