R plotly subplot

时间:2017-07-06 13:37:34

标签: r plotly

我想制作一个两个同步变量的情节条形图。原点是个人访问一个网站,其中两个属性是及时测量的。在此示例中,个人“a”访问该网站两次。

条形图应显示测量值,按时间排序并根据标记着色(不可变!)。

让我们先创建一些数据。

# R version 3.4.0
set.seed(123)
df <- data.frame(id=factor(rep(c("a", "b", "c", "a"), each=10)),
                 time=as.POSIXct(1:40, origin="2017-01-01"),
                 var1=abs(rnorm(40)),
                 var2=abs(rnorm(40)))

# > head(df)
#   id                time        var1      var2
# 1  a 2017-01-01 01:00:01 0.005764186 0.1176466
# 2  a 2017-01-01 01:00:02 0.385280401 0.9474746
# 3  a 2017-01-01 01:00:03 0.370660032 0.4905574
# 4  a 2017-01-01 01:00:04 0.644376549 0.2560922
# 5  a 2017-01-01 01:00:05 0.220486562 1.8438620
# 6  a 2017-01-01 01:00:06 0.331781964 0.6519499

现在制作每个单独变量的两个图,分配给相同的图例组并隐藏第二个图的图例。

library(plotly) # version 4.7.0
p1 <- plot_ly(df, x=~time, y=~var1, color=~id, type="bar",
              legendgroup=~id)
p2 <- plot_ly(df, x=~time, y=~var2, color=~id, type="bar",
              legendgroup=~id, showlegend=FALSE)

然后将两个图添加到具有共享X轴的单个图中。

subplot(p1, p2, shareX=TRUE, nrows=2)

我不确定如何在SO问题中添加HTML页面,但上面的代码应提供可重现的示例。下面添加了PNG以供参考。

All IDs selected in the legend

看起来不错吧?但由于某种原因,图例“选择器”无法正常工作。取消选择“a”仅影响图1(意外行为),而取消选择“c”会影响两个图(预期)。

IDs "a" and "c" deselected from legend

这里发生了什么?可能的错误,或者我错过了什么?

我知道ggplotly并且可以通过使用facet得到类似的情节。问题在于我无法输出随页面宽度扩展的ggplotly HTML(至少不是我所知)。我希望得到的图像是一个随浏览器窗口缩放的HTML,这是默认情况下的情况。

1 个答案:

答案 0 :(得分:1)

可能它可能是一个错误。我注意到根据变量重新排序数据得到了正确的结果。 这不是第一次顺便说一下,我注意到了类似的行为

df<-df[order(df$id),]
library(plotly) # version 4.7.0
p1 <- plot_ly(df, x=~time, y=~var1, color=~id, type="bar",
              legendgroup=~id)
p2 <- plot_ly(df, x=~time, y=~var2, color=~id, type="bar",
              legendgroup=~id, showlegend=FALSE)
subplot(p1, p2, shareX=TRUE, nrows=2)