R中具有相似结构的多重高位图表
我的闪亮应用程序中有多个highcharts,它们的结构都很相似,因此我尝试使用一个函数来概括:R中具有相似结构的多重高位图表,r,highcharts,shiny,shinydashboard,R,Highcharts,Shiny,Shinydashboard,我的闪亮应用程序中有多个highcharts,它们的结构都很相似,因此我尝试使用一个函数来概括: 在我的数据文件中: 编辑 set.seed(5) 数据% hc_添加_系列(df,“线”, HCAE(x=x,y=y ,组=组), dataLabels=list(enabled=TRUE, 样式=列表(fontSize='13px')) ) %>% hc_图例(启用=真)%>% hc_工具提示(共享=真,十字光标=真 ,style=list(fontSize=“18px”) ) %>% hc_添
set.seed(5)
数据%
hc_添加_系列(df,“线”,
HCAE(x=x,y=y
,组=组),
dataLabels=list(enabled=TRUE,
样式=列表(fontSize='13px'))
) %>%
hc_图例(启用=真)%>%
hc_工具提示(共享=真,十字光标=真
,style=list(fontSize=“18px”)
) %>%
hc_添加_主题(主题)}
输出$usuarisgral
只需使用库rlang
中的函数ensym
。因此,在我的代码中,JU将hcaes
行更改为:
hcaes(x=!!rlang::ensym(x),y=!!rlang::ensym(y),group=!!rlang::ensym(group))
这是一个常见问题:hcaes
基于ggplot2::aes
,其行为类似,幸运的是,您可以将其作为字符串访问,ggplot2
具有aes\u字符串
和highcharter具有hcaes\u字符串
library(shiny)
library(highcharter)
gral <- function(df,x,y,group,theme){
highchart() %>%
hc_xAxis(type = "category") %>%
hc_add_series(df, "line",
hcaes_string(x = x, y = y, group = group),
dataLabels = list(enabled = TRUE,
style = list(fontSize = '13px'))) %>%
hc_legend(enabled = TRUE) %>%
hc_tooltip(shared = TRUE, crosshairs = TRUE,style = list(fontSize = "18px")) %>%
hc_add_theme(theme)
}
ui <- basicPage(
column(12,
highchartOutput('usuariosgral')
)
)
server <- function(input, output, session) {
output$usuariosgral <- renderHighchart({
gral(df = mtcars,x ='mpg',y = 'disp',group ='cyl',theme = hc_theme_elementary())
})
}
shinyApp(ui, server)
库(闪亮)
图书馆(高级特许)
格拉尔%
hc_xAxis(type=“category”)%%>%
hc_添加_系列(df,“线”,
hcaes_字符串(x=x,y=y,group=group),
dataLabels=list(enabled=TRUE,
样式=列表(fontSize='13px'))%>%
hc_图例(启用=真)%>%
hc_工具提示(共享=TRUE,十字光标=TRUE,样式=list(fontSize=“18px”))%>%
hc_添加_主题(主题)
}
ui我找到了答案,以防对任何人都有用
只需使用库rlang
中的函数ensym
。因此,在我的代码中,JU将hcaes
行更改为:
hcaes(x=!!rlang::ensym(x),y=!!rlang::ensym(y),group=!!rlang::ensym(group))
您能否通过包含数据和完整的应用程序代码使此示例变得独立?阅读关于你的文章,你只需要回顾并了解你想要如何组织你的代码,Shiny被分成12列,你可以随意划分,只需要适合你的项目,我试着用hcaes\u string
而不是hcaes
,但即使用你的例子也不起作用。谢谢你的回答,它帮助我找到了答案(在我的问题中是我找到的解决方案)。在这种情况下,最好是你自己创造一个答案并接受它
gral <- function(df,x,y,group,theme){
highchart() %>%
hc_xAxis(type = "category") %>%
hc_add_series(df, "line",
hcaes(x = x, y = y
,group = group),
dataLabels = list(enabled = TRUE,
style = list(fontSize = '13px'))
) %>%
hc_legend(enabled = TRUE) %>%
hc_tooltip(shared = TRUE, crosshairs = TRUE
,style = list(fontSize = "18px")
) %>%
hc_add_theme(theme) }
output$usuariosgral <- renderHighchart({ gral(df = data, x = period, y = total,
group = program, theme = hc_theme_elementary()) })
library(shiny)
library(highcharter)
gral <- function(df,x,y,group,theme){
highchart() %>%
hc_xAxis(type = "category") %>%
hc_add_series(df, "line",
hcaes_string(x = x, y = y, group = group),
dataLabels = list(enabled = TRUE,
style = list(fontSize = '13px'))) %>%
hc_legend(enabled = TRUE) %>%
hc_tooltip(shared = TRUE, crosshairs = TRUE,style = list(fontSize = "18px")) %>%
hc_add_theme(theme)
}
ui <- basicPage(
column(12,
highchartOutput('usuariosgral')
)
)
server <- function(input, output, session) {
output$usuariosgral <- renderHighchart({
gral(df = mtcars,x ='mpg',y = 'disp',group ='cyl',theme = hc_theme_elementary())
})
}
shinyApp(ui, server)