2011-02-11 66 views
0

我在R中做了很少有趣的绘图,所以我正在寻找一些帮助。提前致谢。R绘图 - 已知颜色的线条组

我有两个data.frames:

> dim(MyDates) 
[1] 371 1 
> dim(SumData) 
[1] 371 30 

MyDates拥有371周一至周五的日期。 SumData保存30个不同的数据流,与MyDates正确对齐。

的数据被集中在定义为这样的6组:

groups=list(1:5,6:10,11:15,16:20,21:25,26:30) 

我想创建一个情节与SumData所有30列绘制为(我认为)实线。 X轴必须按MyDates升序排列。我想以不同的方式给每个组着色。

group1 = red 
group2 = yellow 
group3 = green 
group4 = cyan 
group5 = blue 
group6 = magenta 

1图,30行,6组,5行/组,每组预定义颜色。

我该如何做到这一点?

谢谢!

回答

0

这里是一个ggplot答案与正确的颜色。

require(ggplot2) 

ngroups = 6 
dummygroup <- function(g) 
       (g * 50) + apply(matrix(rnorm(371 * 5), ncol = 5), 2, cumsum) 
SumData <- do.call("data.frame", lapply(ngroups:1, dummygroup)) 
MyDates <- as.Date(1:371, origin="2009-01-01") 
df <- data.frame(MyDates, SumData) 
dfmelt <- melt(df, id = "MyDates", variable_name = "series") 
dfmelt$Groups <- factor(rep(1:ngroups, each = 371 * 5)) 

Colors <- c("red","yellow","green","cyan","blue","magenta") 
p <- ggplot(dfmelt, aes(MyDates, value, color = Groups, group = series)) 
p <- p + geom_line() + scale_colour_manual(values = Colors) 
print (p) 
+0

看起来很有趣,作为一个新手代码是有帮助的,但它并没有在我这里运行: – LGTrader 2011-02-11 23:32:41

1

一个黑客一点,但能够完成任务......

require(zoo) 

# z <- zoo(SumData, MyDates) 
z <- zoo(matrix(rnorm(30*371),371,30),Sys.Date()-371:1) 

Groups <- list(1:5,6:10,11:15,16:20,21:25,26:30) 
Colors <- c("red","yellow","green","cyan","blue","magenta") 

Col <- vector("character",length(unlist(Groups))) 
for(i in 1:length(Groups)) { 
    Col[Groups[[i]]] <- Colors[i] 
} 

plot(z, screens=1, col=Col)