r - echarts4r:用 selectInput 连接图表图例
问题描述
我正在尝试构建一个闪亮的应用程序,显示来自 echarts4r 包的图表。
该应用程序包含一个选择输入、一个条形图和一个散点图。
我的目标是连接这三个对象。当我单击条形图的一个项目时,我希望图表被此元素过滤。同时,选择输入应反映此选择。单击散点图图例中的项目时也会发生同样的情况。
这是一些示例代码:
library(shiny)
library(tidyverse)
library(echarts4r)
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
selectInput("am", h3("Choose am"),
choices = c(0,1),
selected = c(0,1),
multiple = TRUE)
),
mainPanel(
echarts4rOutput("mt_plot"),
echarts4rOutput("mt_scatter_plot")
)
)
)
server <- function(input, output, session) {
output$mt_plot <- renderEcharts4r({
mtcars_1 <- mtcars %>%
filter(am %in% input$am) %>%
group_by(cyl, am) %>%
summarize(avg_mpg = mean(mpg))
mtcars_1 %>%
group_by(am) %>%
e_charts(cyl) %>%
e_bar(avg_mpg)
})
observe({
input$mt_plot_legend_change
input$mt_scatter_plot_legend_change
if(!is.null(input$mt_plot_legend_change)){
x <- input$mt_plot_legend_change}
else{
x <- input$mt_scatter_plot_legend_change
}
updateSelectInput(session, "am",
selected = x
)
})
output$mt_scatter_plot <- renderEcharts4r({
mtcars_1 <- mtcars %>%
filter(am %in% input$am)
mtcars_1 %>%
group_by(am) %>%
e_charts(disp) %>%
e_scatter(qsec, symbol_size = 15)
})
}
shinyApp(ui = ui, server = server)
上面的应用程序的行为不像我想要的那样。以下场景说明了我的意思。
单击值 1 上的条形图的图例 -> 行为正确,因为条形图仅显示所选值,并且选择输入将其所选值更改为 1
下一步:使用选择输入带回值 0 -> 这也有效。
下一步:再次单击值 1 上的条形图的图例。 -> 这次的行为与数字 1 中的行为不同。我希望与数字 1 中的行为相同。图表应该被过滤通过选定的值和选择输入也应该反映这一点。
任何帮助深表感谢!
解决方案
推荐阅读
- python - python函数的空间复杂度
- c# - 如何用 C# 代码替换预处理器指令,预处理器指令的替代方法
- typescript - 如何从另一个函数访问私有函数
- ios - 我想在 XCode 13 中使用 Cordova 构建一个 iOS Phaser 应用程序
- python - Python 将值四舍五入到小数点后 3 位
- node.js - 上传到 Imgur 时显示加载消息
- c - 使用 C (CGI) 访问 cookie
- flutter - 从子类触发父类中存在的函数
- java - 只有在 x 秒内没有其他任何事情发生时,我该怎么做?
- java - 如何将 Java OpenJDK 1.6.0_36 安装到 CentOS 7.2