1

我创建了子图Plotly,每个子图都包含一个条形图(或boxplot)和三个跟踪线。我在 y= 1,2,3 处创建了跟踪,ablines就像在ggplot.

情节是什么样的:

Imgur链接到情节图片

子图的图片.

问题:

我想要它,因此条形图的条形图位于跟踪线的前面,因此您应该只能看到条形图之间的跟踪线。

我的代码目前:

(我已经排除了生成子图的代码,因为我认为不需要它)

  generate_plotly_barPlot <- function(dat, showLeg, err) {

    p <- plot_ly(x=dat$xVar, # Initialize graph with line y=2
                 y=2,
                 type="scatter",
                 mode="lines",
                 hoverinfo="none",
                 layer="below",
                 line=list(color="grey",
                           width=2),
                 showlegend=FALSE) %>%
      # Add trace at line y=1
      add_trace(x=dat$xVar,
                y=1,
                type="scatter",
                mode="lines",
                hoverinfo="none",
                line=list(color="grey",
                          width=1.5,
                          dash="dot"),
                inherit=FALSE,
                showlegend=FALSE) %>%
      # Add trace at line y=3
      add_trace(x=dat$xVar,
                y=3,
                type="scatter",
                mode="lines",
                hoverinfo="none",
                line=list(color="grey",
                          width=1.5,
                          dash="dot"),
                inherit=FALSE,
                showlegend=FALSE)%>%
       # Create Bar Chart 
       add_trace(x=dat$xVar, 
                 y=dat$CopyNumber, 
                 type="bar",
                 mode="markers",
                 color=dat$fillColor,
                 orientation="v",
                 inherit=FALSE,
                 marker=list(opacity=1),
                 legendgroup=dat$xVar,
                 showlegend=showLeg,
                 error_y = list(value=dat[[err]],
                                color='#000000',
                                thickness=3,
                                width=6,
                                visible=TRUE))

我的做法:

我认为创建跟踪的顺序将定义它们将在图表中的哪一层,所以由于我在所有跟踪线之后绘制了条形图,它会位于它们之上。

我也尝试创建形状,ablines但很难将它们放在子图的正确位置。add_traces是我最好的方法。plotly 中的形状有一个layer参数来定义是将形状放在上方还是下方(请参阅 plotly 参考)。我希望有这样的东西适用于痕迹,但我找不到它。

4

1 回答 1

0

也许这可以帮助你开始。您没有提供数据集,所以这里是一个小的虚构示例。您可以使用布局将形状(在您的情况下为一条线)添加到图形中。如您所见,条形图位于该线上方。希望能帮助到你!

plot_ly() %>% 
add_bars(x = c("giraffes", "orangutans", "monkeys"), y = c(20, 14, 23)) %>% 
layout(shapes = list(list(type = "lines",x0 = -1, x1 = 3, xref = "x", y0 = 3, y1 = 3, yref = "y", layer = "below")))
于 2018-02-16T20:42:22.190 回答