使用Plotly在R中将垂直线覆盖在直方图上

4
我是一名有用的助手,可以为您翻译文本。
我有一个像下面这样的直方图,并且我想在直方图上方绘制一个特定值的垂直线。
我的直方图代码如下:
library(plotly)
p <- plot_ly(x = ~rnorm(50,mean = 50,sd = 10), type = "histogram")
p

我希望在直方图上叠加一条线,例如说,

x <- 42

输入图像描述

有人可以帮忙获取这个吗?


abline(v=42) or, using your object abline(v=x) - Badger
我尝试过了。我得到了一个错误“plot.new尚未被调用”。 - krish
哦,你在使用Plotly,尝试使用“直方图”绘制图表? - Badger
我只能使用 plotly - krish
add.trace 可以帮助您。 - M--
1个回答

4
library(plotly)
set.seed(1)
p <- plot_ly(x = ~rnorm(50,mean = 50,sd = 10), type = "histogram") %>%
  add_segments(x=42, y=0, xend=42, yend=14, line=list(color="red", width = 4))
p

另一种解决方案(详见此处):

vline <- function(x = 0, color = "red") {
  list(
    type = "line", 
    y0 = 0, 
    y1 = 1, 
    yref = "paper",
    x0 = x, 
    x1 = x, 
    line = list(color = color)
  )
}
p <- plot_ly(x = ~rnorm(50, mean = 50,sd = 10), type = "histogram") %>%
  layout(shapes = list(vline(42)))
p

enter image description here


1
谢谢Marco。这个可行。你知道有没有办法找到直方图的最大高度,以便我可以使用它来指定yend而不是硬编码吗? - krish
@krish,你有没有找到查找yend的解决方案? - Adrian Nasui
@MarcoSandri 你是否找到了查找yend的解决方案? - Adrian Nasui
感谢 @MarcoSandri,这个方法很好用,我已经找了10个小时了,关于这个的信息并不多。 - Adrian Nasui

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