2016-07-27 25 views
1

我试图用几个图表创建子图,但是当我在for循环中创建图表然后使用子图()时,所有图表都被重新分配给最后一个。我想这是与如何积极创建图表有关。它首先创建只有参数,然后执行。但我想要不同的图表。有人能帮我吗?在R循环中创建Plotly显示所有元素的最后一个图表

这里是重现该问题的代码:

library(plotly) 
df=data.frame(x=1:10,y1=1:10,y2=11:20) 
cols=c("y1","y2") 
vec_of_plots=list() 
for (i_col in seq_along(cols)){ 
    dat=df[,c("x",cols[i_col])] 
    vec_of_plots[[i_col]]=plot_ly(x = dat[,1], y = dat[,2]) 
} 
subplot(vec_of_plots) 

下面是结果:

enter image description here

但第一图表应该是从1到10,而不是从11到20

我翻翻了Stackoverflow上的其他问题,并找不到答案。在这里我不使用qqplot,也不使用ggplot,只是纯粹的情节。

回答

1

虽然我不明白,为什么直接在list调用subplot功能不会产生正确的结果,我建议您尝试以下解决方案:

library(plotly) 
mydf <- data.frame(x=1:10,y1=1:10,y2=11:20) 

do.call(subplot, lapply(colnames(mydf)[2:3], function(column_name) { 
    plot_ly(x = mydf$x, y = mydf[,column_name]) 
})) 

enter image description here

我希望这帮助。

+0

酷!有用!非常感谢! –

+0

不客气! – Abdou

相关问题