首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为ggplot2准备多列的zoo对象?

如何为ggplot2准备多列的zoo对象?
EN

Stack Overflow用户
提问于 2018-02-24 03:10:39
回答 1查看 316关注 0票数 0

我想画一个动物园物体的多个柱子的图。例如,

代码语言:javascript
复制
 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")))

这就给出了:

代码语言:javascript
复制
              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

转换zoo对象并创建ggplot所需的长数据表单的一种丑陋方法是:

代码语言:javascript
复制
 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)

和ggplot语句:

代码语言:javascript
复制
 ggplot(data = df1, aes(x=x, y=val)) + geom_line(aes(colour=variable))

这是可行的。

在尝试使用更优雅的解决方案时,我尝试将df转换为数据框对象,并使用'reshape2‘包中的'melt’,但我无法使其工作。

有没有一种更优雅的方法来使用ggplot绘制zoo对象df的列?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-24 03:14:33

zoo包提供了函数autoplot.zoo。尝尝这个

代码语言:javascript
复制
library(zoo)
autoplot.zoo(df, facets = NULL)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48954689

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档