Воспроизведите аудио, нажав на ggplot / plotly scatter plot - PullRequest
1 голос
/ 06 апреля 2020

Я создал точечный график с помощью ggplot2 и хотел бы связать точки данных с соответствующими звуковыми файлами. В приложении shiny должна быть возможность щелкнуть или навести курсор мыши на точку данных, чтобы воспроизвести звуковой файл. Хотя мне удается вывести сюжет в блестящее приложение, я борюсь с включением tags$audio, как описано здесь , в сюжет.

library(shiny)
library(plotly)

ui <- fluidPage(
  plotlyOutput('scatter')
)
server <- function(input, output) {
  output$scatter <- renderPlotly({
    ggplotly(p)
  })
}
shinyApp(ui = ui, server = server)

plotly plot отображает всплывающую подсказку с информацией о каждой точке данных, а также URL-адрес звукового файла. См. Рабочий пример здесь: https://chart-studio.plotly.com/~petergi/1.

Код ggplot2 содержит информацию об URL в тексте aes.

p <- ggplot(without_outliers) +
  aes(x = T2, y = T1, label = labels, col = next_label, 
      text = paste0("URL: ", "https://www.yyyy.zz/audio/", tolower(bundle), ".mp3"))

Любая подсказка для как привести аудио-плеер к точкам данных рассеянного графика в блестящем будет высоко оценен.

1 Ответ

1 голос
/ 08 апреля 2020

Тем временем я нашел рабочее решение в использовании пакета R ggiraph, который расширяет возможности ggplot2 с помощью всплывающей подсказки и функции onclick при использовании в приложении shiny. Вкратце, вызов geom_point_interative может иметь аргумент onClick, который, в свою очередь, является вызовом функции Javascript для воспроизведения звука (без открытия нового окна или проигрывателя).

library(ggplot2)
library(ggiraph)
library(shiny)

p <- ggplot(mtcars, aes(wt, mpg))+
  geom_point_interactive(onclick="var audio= new Audio(\"https://file-examples.com/wp-content/uploads/2017/11/file_example_MP3_700KB.mp3\"); audio.play();")
x <- girafe(ggobj = p)

Чтобы разрешить всем различным точкам данных в фрейме данных связываться с их соответствующими аудиофайлами, фрейм данных следует изменить, чтобы он содержал новый столбец с отдельным кодом javascript для воспроизведения звука.

Пример блестящего приложения можно найти здесь .

...