首页 > 解决方案 > 沿着整个段绘制带有工具提示的 add_segment()

问题描述

这是8 月6 月来自 RStudio 社区的交叉帖子。几周前,我还在r-plotly here 中打开了一个问题。我仍然不确定解决这个问题是否需要额外plotly的功能,或者我是否遗漏了一些东西。

这几乎是2016 年 SO 帖子的副本,有类似问题。这篇文章的不同之处在于:(1) 它需要使用plotly(not highcharter.js),(2) 它需要工具提示将出现在一个片段上的任何地方,例如,不仅仅是n片段上的点,以及 (3) 在r-plotly 自 2016 年以来。


问题

在 plotly 中,您可以使用 add_segments() 在两点之间添加线段。

将鼠标悬停在段上的任何位置时,如何向用户显示工具提示,而不仅仅是两端?从 javascript 的角度来看,这似乎应该是可行的,但我似乎无法让它与 plotly 一起使用。

例子:

library(plotly)
my_data <- data.frame(
  x = c(1, 6), xend = c(5, 10),
  y = c(1, 2), yend = c(1, 2),
  text = c("First", "Second")
)

plot_ly(my_data, x = ~x, xend = ~xend, y = ~y, yend = ~yend, 
        text = ~text, hoverinfo = "text") %>%
  add_segments()

在此处查看 gif 演示(没有嵌入,因为阅读文本时有点烦人)

几乎解决

在类似的2016 SO 帖子中,“dww”通过生成许多靠近在一起的点,然后使用add_trace

NP=100
mydat <- data.frame(t1=seq(1,3,len=NP), t2=seq(4,5,len=NP), y1=rep(1,NP),  y2=rep(2,NP))

plot_ly(data=mydat) %>%
  add_trace(x=~t1, y=~y1, mode="lines", hoverinfo="text", text="hello") %>%
  add_trace(x=~t2, y=~y2, mode="lines", hoverinfo="text", text="there") 

这个解决方案非常有用,但没有回答这个问题,因为(1)一旦用户放大到某个点,他们将无法再访问工具提示(见下面的 gif),以及(2)这个解决方案是计算密集型的——有数百条痕迹,我不必要地产生了数千个不需要的点。

gif演示

TL

使用plotly(或 javascript)的 R 端口,我可以生成一个具有自己的工具提示的段(与两个连续的笛卡尔轴兼容)吗?

标签: rplotlyr-plotly

解决方案


根据包作者的说法,r-plotly 中尚不存在此功能。见这里:https ://github.com/ropensci/plotly/issues/1832#issuecomment-675721763


推荐阅读