Creating Plotly in R in loops 显示所有元素的最后一个图表
Creating Plotly in R in loops shows the last chart for all elements
我正在尝试创建一个包含多个绘图图表的子图,但是当我在 for 循环中创建图表然后使用 subplot() 时,所有图表都被重新分配到最后一个图表。我想这与 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)
结果如下:
但是第一个图表应该是从 1 到 10,而不是从 11 到 20。
我查看了 Whosebug 上的其他问题,但找不到答案。这里我没有使用qqplot也没有ggplot,纯plotly.
虽然我不明白为什么直接在 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])
}))
希望对您有所帮助。
我正在尝试创建一个包含多个绘图图表的子图,但是当我在 for 循环中创建图表然后使用 subplot() 时,所有图表都被重新分配到最后一个图表。我想这与 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)
结果如下:
但是第一个图表应该是从 1 到 10,而不是从 11 到 20。
我查看了 Whosebug 上的其他问题,但找不到答案。这里我没有使用qqplot也没有ggplot,纯plotly.
虽然我不明白为什么直接在 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])
}))
希望对您有所帮助。