在绘图条形图中添加水平线

时间:2019-03-14 19:12:18

标签: r bar-chart plotly

我正在尝试使用R plotly的{​​{1}}类型的图来生成具有水平布置的框的图,并在其背景中添加一条水平线(而不是超越它们)。另外,我希望这条线在每个方向上对称地延伸一个盒子单元。

这就是我在做什么:

bar

哪个给:

enter image description here

我的问题是:

  1. 如何在两个方向上延长线
  2. 如何将行放置在背景中,以使其不会越过框框
  3. 我将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)) 的值指定为0.2,但plot.df$y的范围为yaxis,因此框看起来不像长条。但随后的传说似乎太高了。还有什么更好的方法来获得图例显示的方块比当前更低的方块?

1 个答案:

答案 0 :(得分:1)

对于水平线,您可以看到Horizontal/Vertical Line in 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))