R Plotting - группы линий с известными цветами - PullRequest
0 голосов
/ 11 февраля 2011

Я сделал очень мало интересных графиков в 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)

Я хотел бы создать один график со всеми 30 столбцами в SumDataпостроены как (я думаю) сплошные линии.Ось X должна быть MyDates в порядке возрастания.Я хотел бы покрасить каждую группу по-разному.

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

1 сюжет, 30 линий, 6 групп, 5 линий / группа, каждая группа имеет предопределенный цвет.

Как мне добитьсяэто?

Спасибо!

Ответы [ 2 ]

1 голос
/ 12 февраля 2011

Немного взломать, но это делает работу ...

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)
0 голосов
/ 12 февраля 2011

Вот ответ 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) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...