我想制作一个动物园对象的多列图。例如,
sha2
给出:
df <- zoo(data.frame(A = c(2.3, 4.4, 5.2),
B = c(5.5, 1.7, 4.4),
C = c(2.5, 7.7, 3.3)),
order.by = c(as.Date("2010-10-1"),
as.Date("2010-10-5"),
as.Date("2010-10-7")))
转换动物园对象并创建ggplot所需的长数据形式的一种丑陋方式是:
A B C
2010-10-01 2.3 5.5 2.5
2010-10-05 4.4 1.7 7.7
2010-10-07 5.2 4.4 3.3
和ggplot情节声明:
var.vec <- NULL
val.vec <- NULL
num.rows <- nrow(df)
for(i in 1:ncol(df))
{
v <- rep(colnames(df)[i], num.rows)
var.vec <- c(var.vec, v)
val.vec <- c(val.vec, df[, i])
}
df1 <- data.frame(x = time(new.ticker.prices),
val = val.vec,
variable = var.vec,
stringsAsFactors = FALSE)
这很有效。
https://gist.github.com/BrianLeishman/d7903a4acba75707c05fc581e1c714c3
为了尝试使用更优雅的解决方案,我尝试将df转换为数据框对象并使用&#39; melt&#39;来自&#39; reshape2&#39;包,但我不能让它工作。
是否有更优雅的方法使用ggplot绘制动物园对象df的列?