如何更改 flexdashboard selectInput 中的 y

Posted

技术标签:

【中文标题】如何更改 flexdashboard selectInput 中的 y【英文标题】:How to change the y in flexdashboard selectInput 【发布时间】:2021-04-08 22:42:08 【问题描述】:

我正在尝试使用 IMDb 数据制作一个 flexdashboard,它具有交互式抖动图,您可以在其中更改 x 和 y 以可视化层次聚类结果。我已经编写的代码只能更改 x 和 k 的数量。我想我应该使用reactive 函数,但我不太了解如何使用它。我已经从 youtube 和一些纪录片中尝试了许多其他方法,但仍然无法更改 y。这里是layout of my dashboard,y 卡在运行时变量上

data=df %>% 
  select(Rating, Votes, Gross, Runtime, Metascore)

selectInput("x", label = "X : ",choices = names(data))

selectInput("y", label = "Y : ",choices = names(data))

sliderInput('k',"Cluster",min = 2,max = 10, value = 6)

selectedData=reactive(
  data %>% select(input$x, input$y)
)

data_scaled=scale(data)

dist_data=dist(data_scaled, method='euclidean')

hc_data=hclust(dist_data, method = "average")

renderPlot(
  ggplot(selectedData(),
         aes(x=!!rlang::sym(input$x), y=!!rlang::sym(input$y),
             col=factor(cutree(hc_data, k=input$k))))+
    geom_jitter(size=5, alpha=0.5 )+
    labs(col="Cluster")
)

【问题讨论】:

【参考方案1】:

这是一个似乎可行的替代示例,使用来自ggplot2diamonds 数据集。我的猜测是缩放和集群步骤需要很长时间才能运行,以至于 y 反应似乎不起作用。如果应用运行时间有问题,我建议您对数据进行预处理。


data=diamonds[1:1e3,] %>% 
    dplyr::select(where(is.numeric))

selectInput("x", label = "X : ",choices = names(data))

selectInput("y", label = "Y : ",choices = names(data))

sliderInput('k',"Cluster",min = 2,max = 10, value = 6)

data_scaled=scale(data)

dist_data=dist(data_scaled, method='euclidean')

hc_data=hclust(dist_data, method = "average")

renderPlot(
    ggplot(data,
           aes(x=!!rlang::sym(input$x), y=!!rlang::sym(input$y),
               col=factor(cutree(hc_data, k=input$k))))+
        geom_jitter(size=5, alpha=0.5 )+
        labs(col="Cluster")
)

【讨论】:

以上是关于如何更改 flexdashboard selectInput 中的 y的主要内容,如果未能解决你的问题,请参考以下文章

更改 flexdashboard 中单个文本部分的字体大小

如何在 flexdashboard 中结合行列布局?

runjs 在 flexdashboard 中更改 observeEvent 的位置?

在 flexdashboard 中单击时更改第二个标签集

在 R 中缩放 flexdashboard 仪表

使用 flexdashboard 模板重现闪亮