2011-02-11 6 views
0

R에서 약간의 흥미로운 플로팅을 수행 했으므로 약간의 도움이 필요합니다. 미리 감사드립니다.R 그림 - 알려진 색상의 선 그룹

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

MyDates 371 월요일부터 금요일 날짜를 원하는 분야

나는 두 data.frames 있습니다. SumData는 MyDates에 대해 올바르게 정렬 된 30 개의 서로 다른 데이터 스트림을 보유합니다.

데이터는 같은 정의 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 

플롯, 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

+0

@LGTrader을 : 잘 작동하는 것 같다. 그 문제에 대비하여 ggplot2 패키지가 필요한 라인을 추가했습니다. –

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) 
관련 문제