Tôi muốn tạo một hình dạng đường hoặc hình chữ nhật tương tác, sao cho mỗi phân đoạn hoặc hình chữ nhật cung cấp thông tin khác nhau khi người dùng di chuột qua nó. Tôi đã xem trong số htmlwidgets showcase và tôi nghĩ rằng lôgic trông đầy hứa hẹn. (Tôi mở cho các phương pháp liên quan đến R khác.)Đoạn thẳng hoặc hình chữ nhật có thông tin di chuột trong hình vẽ R
Dưới đây là một ví dụ đơn giản. Tôi có thể tạo ra một âm mưu của các điểm kết thúc (t1 và t2) cung cấp thông tin di chuột. Nhưng tôi muốn thông tin di chuột xuất hiện bất cứ lúc nào người dùng di chuyển qua khoảng trống giữa hai điểm kết thúc).
Tôi có thể thêm đoạn đường bằng cách sử dụng add_trace()
, nhưng tôi không thể di chuột để hoạt động. Và nếu tôi thêm các đoạn thẳng thứ hai, tôi nhận được một thông báo lỗi:
Error in plot_ly(data = mydat, x = t2, y = y, mode = "markers", hoverinfo = "text", :
requires numeric/complex matrix/vector arguments
tôi có thể thêm hình chữ nhật bằng layout()
, nhưng một lần nữa, tôi không thể có được sự di chuột để làm việc. Trong trường hợp ai đó gợi ý cách để lấy các đối số di chuột để làm việc cho một trong hai cách tiếp cận, tôi cũng sẽ hoan nghênh các đề xuất về cách mã này cho một số lượng lớn phân đoạn/hình chữ nhật (không chỉ 2 như trong ví dụ đơn giản này).).
Mọi đề xuất?
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])
))