首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R- from zoo包中的重叠图

R- from zoo包中的重叠图
EN

Stack Overflow用户
提问于 2015-04-09 19:13:40
回答 1查看 359关注 0票数 0

使用以下代码:

代码语言:javascript
复制
library("ggplot2")
require(zoo)   

args <- commandArgs(TRUE)
input <- read.csv(args[1], header=F, col.names=c("POS","ATT"))
id <- args[2]

prot_len <- nrow(input)
manual <- prot_len/100 # 4.3

att_name <- "Entropy" 

att_zoo <- zoo(input$ATT)
att_avg <- rollapply(att_zoo, width = manual, by = manual, FUN = mean, align = "left")

autoplot(att_avg, col="att1") + labs(x = "Positions", y = att_name, title="")

使用数据:

代码语言:javascript
复制
> str(input)
'data.frame':   431 obs. of  2 variables:
 $ POS: int  1 2 3 4 5 6 7 8 9 10 ...
 $ ATT: num  0.652 0.733 0.815 1.079 0.885 ...

我有:

我想上传的input2有不同的长度(因此,不同的x轴)和重叠的2条曲线在同一个曲线(我的意思是重叠,因为我想要两条曲线在相同的绘图大小,所以我会“忽略”重叠的轴标签和标题),我想比较形状,不管输入的长度。

首先,我尝试生成玩具input2,更改manual值,这样我就有了att_avg2,其中manual等于例如7。在原始autoplot和新的autoplot-2之间,我添加了par(new=TRUE),但这不是我预期的输出。有什么关于如何做到这一点的提示吗?也许将zoo系列中的att_avg保存到data.frame中而不是使用autoplot会更好?谢谢

更新,对G. Grothendieck的回应:

如果我这样做了:

代码语言:javascript
复制
[...]
att_zoo <- zoo(input$ATT)
att_avg <- rollapply(att_zoo, width = manual, by = manual, FUN = mean, align = "left") #manual=4.3
att_avg2 <- rollapply(att_zoo, width = 7, by = 7, FUN = mean, align = "left")

autoplot(cbind(att_avg, att_avg2), facet=NULL) +
  labs(x = "Positions", y = att_name, title="")

我得到了

和一个警告消息:Removed 1 rows containing missing values (geom_path).

EN

回答 1

Stack Overflow用户

发布于 2015-04-09 20:43:55

par用于经典图形,而不是用于ggplot2。如果您有两个zoo系列,只需将系列cbindmerge放在一起,然后使用facet=NULL对它们进行autoplot

代码语言:javascript
复制
library(zoo)
library(ggplot2)

z1 <- zoo(1:3) # length 3
z2 <- zoo(5:1) # length 5

autoplot(cbind(z1, z2), facet = NULL)

注意:问题省略了input2,因此可能会有一些未显示的方面的额外考虑。

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

https://stackoverflow.com/questions/29536968

复制
相关文章

相似问题

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