在Plotly条形图中添加水平线

6

我正在尝试使用 Rplotly 库中的 bar 类型图来生成水平布局的盒状图,并在其背景中添加一条横线(而不是放在它们上面)。此外,我希望该线对称地延伸一个箱子单位。

这是我的操作:

plot.df <- data.frame(x = paste0("LONG NAME ",1:6),y = 0.2,width=0.75,group = c("A","B","B","B","C","A"),stringsAsFactors = F)
plot.df$group <- factor(plot.df$group)


plotly::plot_ly(plot.df) %>%
  plotly::add_trace(x=~x,y=~y/2,type='scatter',mode='lines',line=list(color='black'),showlegend=F) %>%
  plotly::add_bars(x=~x,y=~y,width=~width,color=~group) %>%
  plotly::layout(xaxis=list(title=NA,zeroline=F,tickangle=45),yaxis=list(title=NA,zeroline=F,showgrid=F,range=c(0,1),showticklabels=F))

这将显示:

在此输入图片描述

我的问题是:

  1. 如何在两个方向上扩展线条
  2. 如何将线条放在背景中,使其不覆盖框
  3. 我将plot.df$y指定为0.2,但将yaxis范围指定为c(0,1),以便框看起来不像长条。但然后图例出现在太高的位置。有更好的方法可以获得图例显示较低的正方形框吗?
1个回答

3

关于水平线,您可以查看Plotly中的水平/垂直线

使用:

layout(legend =list(x = 1 ,y =0 ))

您可以解决图例问题。

我无法解决您的第二个问题(将栏放置在背景中)。希望这有所帮助:

hline <- function(y = 0, color = "blue") {
  list(
    type = "line", 
    x0 = 0, 
    x1 = 1, 
    xref = "paper",
    y0 = y, 
    y1 = y, 
    line = list(color = color)
  )
}

plot_ly(plot.df) %>%
  add_bars(x=~x,y=~y,width=~width,color=~group, hoverinfo = "text") %>%
  layout(shapes = list(hline(0.1)))%>%
  layout(legend =list(x = 1 ,y =0 ))%>%
  layout(xaxis=list(title=NA,zeroline=F,tickangle=45),yaxis=list(title=NA,zeroline=F,showgrid=F,range=c(0,1),showticklabels=F))

1
喜欢这个解决方案!请问,有没有办法在行上直接显示名称(例如指示行的值和/或含义),而不是在图例框中显示? - Angelo
这是一个很好的解决方案,但我希望有一种方法可以将其添加到图例中。这太令人困惑了。 - ethan tenison

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接