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

Posted

技术标签:

【中文标题】如何在 plotly 中绘制 y 轴刻度之间的水平线?【英文标题】:How to plot horizontal lines between y-axis ticks in plotly? 【发布时间】:2017-12-16 01:27:45 【问题描述】:

这里有一些示例代码来说明我的问题。

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 进行了广泛的查看,但还没有找到任何似乎有帮助的东西。有人告诉我,通过layout 部分的y-axis 中的一些custom JS 可能有某种解决方案,但我不确定我将如何解决这个问题/我不是很懂JS。

【问题讨论】:

【参考方案1】:

我可以通过在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))

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

【讨论】:

以上是关于如何在 plotly 中绘制 y 轴刻度之间的水平线?的主要内容,如果未能解决你的问题,请参考以下文章

MATLAB用作图之后如何把y轴的坐标值放到两个刻度之间?

如何从 plotly 中删除图中的轴刻度线?

用Python设置matplotlib.plot的坐标轴刻度间隔以及刻度范围

Python设置matplotlib.plot的坐标轴刻度间隔以及刻度范围

如何将 R Plotly 中的子图之间的轨迹与共享的 Y 轴链接起来,以便 hoverinfo 出现在两者上?

如何在 R 中使用 ggplot2 绘制的绘图的 y 轴刻度中准确显示数字的 SI 前缀?