如何绘制y轴刻度之间的水平线?

时间:2017-07-11 20:17:47

标签: r plotly horizontal-line

以下是一些示例代码来说明我的问题。

library(plotly)

p <- plot_ly(x = mtcars$mpg, y = seq_along(rownames(mtcars)), text=rownames(mtcars),
             type = 'scatter', mode = 'markers')


ax <- list(
  title = "",
  ticktext = rownames(mtcars),
  tickvals = seq(1,32)
)


line <- list(
  type = "line",
  line = list(color = "pink"),
  xref = "x",
  yref = "y"
  layer = 'below'
)

lines <- list()
for (i in seq_along(rownames(mtcars))) {
  line[["x0"]] <- mtcars$mpg[i] - 1
  line[["x1"]] <- mtcars$mpg[i] + 1
  line[c("y0", "y1")] <- i
  lines <- c(lines, list(line))
}

p <- layout(p, title = 'Highlighting with Lines', shapes = lines, yaxis=ax)
p

我想在图中添加水平线以分隔每个y轴标签。我更喜欢分割标签和图形的线条,但仅仅分割图形就足够了。我已经通过plotly reference进行了广泛的研究,但还没有找到任何有用的东西。有人告诉我,y-axis部分layout中的某些custom JS可能会有某种解决方案,但我不确定如何解决这个问题/我不是很了解JS 。

1 个答案:

答案 0 :(得分:0)

我能够通过在lines列表中添加更多行来实现此目的。在上面显示的for循环下,如果添加代码:

for (i in seq_along(rownames(mtcars))) {
  line[["x0"]] <- 10 
  line[["x1"]] <- 35
  line[c("y0", "y1")] <- i-.5
  lines <- c(lines, list(line))
}

它将在每条数据线之间放置一条分隔线。