Я хочу создать интерактивную фигуру сегментов или прямоугольников, так что каждый сегмент или прямоугольник дает различную информацию, когда пользователь наводит на нее свою мышь. Я посмотрел в htmlwidgets showcase, и я подумал, что сюжетно выглядит многообещающим. (Я открыт для других методов, связанных с R).
Ниже приведен простой пример. Я могу создать график конечных точек (t1 и t2), которые предоставляют информацию наведения. Но я хотел бы, чтобы информация наведения отображалась в любое время, когда пользователь наводил курсор на пространство между двумя конечными точками).
Я могу добавить сегмент линии, используя add_trace()
, но я не могу заставить зависание работать. И если я добавлю второй сегмент линии, я получаю сообщение об ошибке:
Error in plot_ly(data = mydat, x = t2, y = y, mode = "markers", hoverinfo = "text", :
requires numeric/complex matrix/vector arguments
Я могу добавить прямоугольники с помощью layout()
, но опять же, я не могу заставить зависание работать.
В случае, если кто-то предлагает способ заставить аргументы зависания работать для любого подхода, я также приветствовал бы предложения о том, как закодировать это для большого количества сегментов/прямоугольников (не только 2, как в этом простом примере),
Любые предложения?
mydat <- data.frame(t1=c(1, 3), t2=c(4, 5), y=c(1, 2), task=c("this", "that"))
library(plotly)
# attempt with one line segment - hover doesn't work
plot_ly(data=mydat, x=t2, y=y, mode="markers",
hoverinfo="text", text=task) %>%
add_trace(data=mydat, x=t1, y=y, mode="markers",
hoverinfo="text", text=task) %>%
add_trace(
x=c(mydat$t1[1], mydat$t2[1]), y=c(mydat$y[1], mydat$y[1]),
mode="lines", hoverinfo="text", text=mydat$task[1])
# attempt with both line segments -
# Error in plot_ly, requires numeric/complex matrix/vector arguments
plot_ly(data=mydat, x=t2, y=y, mode="markers",
hoverinfo="text", text=task) %>%
add_trace(data=mydat, x=t1, y=y, mode="markers",
hoverinfo="text", text=task) %>%
add_trace(
x=c(mydat$t1[1], mydat$t2[1]), y=c(mydat$y[1], mydat$y[1]),
mode="lines", hoverinfo="text", text=mydat$task[1]) %*%
add_trace(
x=c(mydat$t1[2], mydat$t2[2]), y=c(mydat$y[2], mydat$y[2]),
mode="lines", hoverinfo="text", text=mydat$task[2])
# attempt with rectangles - hover doesn't work
plot_ly(data=mydat, x=t2, y=y, mode="markers",
hoverinfo="text", text=task) %>%
add_trace(data=mydat, x=t1, y=y, mode="markers",
hoverinfo="text", text=task) %>%
layout(shapes=list(
list(type="rect", x0=mydat$t1[1], x1=mydat$t2[1], xref="x",
y0=mydat$y[1], y1=mydat$y[1]+0.1, yref="y",
hoverinfo="text", text=mydat$task[1]),
list(type="rect", x0=mydat$t1[2], x1=mydat$t2[2], xref="x",
y0=mydat$y[2], y1=mydat$y[2]+0.1, yref="y",
hoverinfo="text", text=mydat$task[2])
))