Добавить линии в сюжет - PullRequest
0 голосов
/ 29 октября 2018

Я создал куб точек 3x3x3 в диапазоне от -1 до 1. Я хочу нанести горизонтальные и вертикальные линии, чтобы соединить точки, чтобы сделать это проще для визуализации. Как мне это сделать? Код ниже, где я до:

library(plotly) 
library(shiny) 
ui <- fluidPage( 
plotlyOutput("plot"), 
verbatimTextOutput("hover"), 
verbatimTextOutput("click") ) 

server <- function(input, output, session) { 

output$plot <- renderPlotly({ 
plot_ly(x = c(-1, -1, -1, -1, -1, -1, -1, -1, -1,
               0,  0,  0,  0,  0,  0,  0,  0,  0,
               1,  1,  1,  1,  1,  1,  1,  1,  1),

        y = c(-1, -1, -1,  0,  0,  0,  1,  1,  1,
              -1, -1, -1,  0,  0,  0,  1,  1,  1,
              -1, -1, -1,  0,  0,  0,  1,  1,  1), 

        z = c(-1,  0,  1,  -1, 0,  1, -1,  0,  1,
              -1,  0,  1,  -1, 0,  1, -1,  0,  1,
              -1,  0,  1,  -1, 0,  1, -1,  0,  1), type = "scatter3d")  
}) 

 output$hover <- renderPrint({ 
d <- event_data("plotly_hover") 
if (is.null(d)) "Hover events appear here (unhover to clear)" else d 
}) 

  output$click <- renderPrint({ 
d <- event_data("plotly_click") 
if (is.null(d)) "Click events appear here (double-click to clear)" else d 
}) 

} 

shinyApp(ui, server)

Спасибо! * * 1004

1 Ответ

0 голосов
/ 31 октября 2018

Может быть, это может показать вам один из способов:

library(plotly) 
library(shiny) 
ui <- fluidPage( 
  plotlyOutput("plot"), 
  verbatimTextOutput("hover"), 
  verbatimTextOutput("click") ) 

df <- data.frame(
  x = c(-1, -1, -1, -1, -1, -1, -1, -1, -1,
        0,  0,  0,  0,  0,  0,  0,  0,  0,
        1,  1,  1,  1,  1,  1,  1,  1,  1),
  y = c(-1, -1, -1,  0,  0,  0,  1,  1,  1,
        -1, -1, -1,  0,  0,  0,  1,  1,  1,
        -1, -1, -1,  0,  0,  0,  1,  1,  1),
  z = c(-1,  0,  1,  -1, 0,  1, -1,  0,  1,
        -1,  0,  1,  -1, 0,  1, -1,  0,  1,
        -1,  0,  1,  -1, 0,  1, -1,  0,  1)
)
li <- data.frame(
  x = c( 1,  0, -1, -1, -1),
  y = c( 1,  1,  1,  1,  1),
  z = c(-1, -1, -1,  0,  1)
)

server <- function(input, output, session) { 

  output$plot <- renderPlotly({ 

    plot_ly() %>% 
      add_markers(data = df, x=~x, y=~y, z=~z, mode = 'markers', type = 'scatter3d') %>% 
      add_markers(data = li, x = ~x, y=~y, z=~z, type = 'scatter3d', mode = 'lines',
                  line = list(width = 6, color = "red"), inherit = F)
  }) 

  output$hover <- renderPrint({ 
    d <- event_data("plotly_hover") 
    if (is.null(d)) "Hover events appear here (unhover to clear)" else d 
  }) 

  output$click <- renderPrint({ 
    d <- event_data("plotly_click") 
    if (is.null(d)) "Click events appear here (double-click to clear)" else d 
  }) 

} 

shinyApp(ui, server)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...