在R in循环中创建Plotly显示所有元素的最后一个图表

时间:2016-07-27 11:56:40

标签: r plotly

我正在尝试创建一个包含多个图表图表的子图,但是当我在for循环中创建图表然后使用subplot()时,所有图表都会重新分配到最后一个图表。我想这与绘制图表的方式有关。它首先只创建参数然后执行。但我想要不同的图表。有人能帮助我吗?

以下是重现问题的代码:

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 个答案:

答案 0 :(得分:1)

虽然我无法弄清楚为什么直接在subplot上调用list函数无法产生正确的结果,但我建议您尝试以下解决方案:

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

我希望这会有所帮助。