是否可以使用wordcloud2创建闪亮的点击事件?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了是否可以使用wordcloud2创建闪亮的点击事件?相关的知识,希望对你有一定的参考价值。

是否有可能使用wordcloud2包返回wordcloud中任何单词的单击作为闪亮的单击事件,以便将其他对象(例如bsModal)绑定到它?例如,在图中,这是通过生成可以从闪亮会话内访问的对象并保存事件数据(例如点击坐标)(https://plot.ly/r/shinyapp-linked-click/)来实现的。

在下面的示例中,我想将bsModal绑定到wordcloud,以便显示用户单击的单词。

长子。 [R

library(shiny)
shinyUI(fluidPage(
    mainPanel(
        wordcloud2Output("wordcloud")
    )
))

server.R

library(shiny)
library(wordcloud2)
library(tm)

shinyServer(function(input, output) {

    words <- c ("1st", "2nd", "3rd", "4th", "5h", "6th", "7th", "8th", "9th", "10th", "11th", "12th", "13th", "14th", "15th", "16th", "17th", "18th", "19th", "20th",
            "21st", "22nd", "23rd", "24th", "25th", "26th", "27th", "28th", "29th", "30th")
    random_words <- sample(words, 500, replace = TRUE)
    docs <- Corpus(VectorSource(random_words))
    dtm <- TermDocumentMatrix(docs)
    m <- as.matrix(dtm)
    v <- sort(rowSums(m),decreasing=TRUE)
    d <- data.frame(word = names(v),freq=v)

    wordcloud_plot <- wordcloud2(data = d, size = 0.7, shuffle =FALSE, ellipticity = 1, minRotation = -pi/8, maxRotation = pi/8,
                            shape = 'circle')
    output$wordcloud  <- renderWordcloud2(wordcloud_plot)
})
答案

是的,你可以通过在Shiny应用程序的UI中添加几行javascript来解决这个问题。

只需按如下方式修改UI:

library(shiny)
shinyUI(fluidPage(
    mainPanel(
        wordcloud2Output("wordcloud"),
        tags$script(html(
               "$(document).on('click', '#canvas', function() {",
               'word = document.getElementById("wcSpan").innerHTML;',
               "Shiny.onInputChange('selected_word', word);",
               "});"
            ))
    )
))

此代码生成一个新的输入变量,您可以通过shinyapp服务器端的input$selected_word访问该变量,并且您可以使用它将wordcloud与应用程序中的其他对象绑定。

当它采用悬停函数的值时,输入将具有格式word:freq。您可以使用gsub()摆脱频率和冒号,如下所示:gsub(":.*","",isolate(input$selected_word))

希望能帮助到你!

以上是关于是否可以使用wordcloud2创建闪亮的点击事件?的主要内容,如果未能解决你的问题,请参考以下文章

如何在闪亮中循环观察事件?单击多边形时更改传单中的样式

为 DT 数据表上的双击事件创建 R 闪亮绑定

如何在闪亮中创建加载事件或默认事件?

在下拉菜单中添加动作按钮,我怎么知道按钮是不是被点击了闪亮

使用 purrr::pwalk 从 tibble 创建多个闪亮的 observeEvents

闪亮的:如何在闪亮的应用程序中添加反应栏