我在R中只做了很少的有趣的绘图,所以我需要一点帮助。提前谢谢。
我有两个data.frames:
> dim(MyDates)
[1] 371 1
> dim(SumData)
[1] 371 30MyDates拥有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 = magenta1个图,30条线,6组,5线/组,每组预定义颜色。
我如何才能做到这一点呢?
谢谢!
发布于 2011-02-12 06:29:31
这是一个具有正确颜色的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) 发布于 2011-02-12 05:09:15
有点小题大做,但这就完成了工作...
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)https://stackoverflow.com/questions/4973783
复制相似问题