gpt4 book ai didi

r - 是否可以使用 wordcloud2 创建 Shiny 的点击事件?

转载 作者:行者123 更新时间:2023-12-03 06:18:44 27 4
gpt4 key购买 nike

wordcloud2 包是否可以将 wordcloud 中任何单词的点击作为 Shiny 的点击事件返回,以便将其他对象(例如 bsModal)绑定(bind)到它?例如,在plotly中,这是通过生成一个可以从 Shiny session 中访问并保存事件数据(例如点击坐标)的对象来完成的( https://plot.ly/r/shinyapp-linked-click/ )。

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

ui.R

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

服务器.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);",
"});"
))
)
))

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

由于它采用悬停函数的值,因此输入的格式将为word:freq。您可以使用 gsub() 删除频率和冒号,如下所示:gsub(":.*","",isolate(input$selected_word))

希望对你有帮助!

关于r - 是否可以使用 wordcloud2 创建 Shiny 的点击事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44502965/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com