作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想动态快速地突出显示 faceted
上的点ggplot在 shiny .
我的问题:每次重新计算图形都需要花费大量时间(我经常遇到 facet 绘图)。
创意
此刻我只有两个:
ggplot
,并且只修改一些红色的点。 ggplot
与 ggplot
仅限于红点(会轻得多)。 library(shiny); library(ggplot2); library(dplyr)
# Dataset
data_=do.call("rbind", replicate(1000, mtcars, simplify = FALSE))
# General graphic
p_0=ggplot(data=data_,aes(x=wt,y=mpg))+geom_point()+facet_wrap(~carb)
ui=fluidPage(
fluidRow(
column(width = 12,
numericInput("choice", "Highlight in red when carb=",1,),
plotOutput("plot1"))
)
)
server=function(input, output) {
p=reactive({return(
p_0+geom_point(data=data_ %>% filter(carb==input$choice),aes(x=wt,y=mpg),color='red')
)})
output$plot1=renderPlot({p()})
}
shinyApp(ui, server)
ui=fluidPage(
fluidRow(
column(width = 12,
numericInput("choice", "Highlight in red when carb=", 1,),
absolutePanel(plotOutput("plot1"), top = 200, left = 0,width = 500, height = 500),
absolutePanel(plotOutput("plot2"), top = 200, left = 0,width = 500, height = 500)
)
)
)
server=function(input, output) {
p=reactive({return(ggplot(data=data_,aes(x=wt,y=mpg))+geom_blank()+facet_wrap(~carb)+
geom_point(data=data_ %>% filter(carb==input$choice),color='red',size=3)+
theme_bw()+
theme(legend.position="none")+
theme(
panel.background =element_rect(fill = "transparent"),
plot.background = element_rect(fill = "transparent"),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank()
)
)})
output$plot1=renderPlot({p_0},bg="transparent")
output$plot2=renderPlot({p()},bg="transparent")
}
shinyApp(ui, server)
最佳答案
我想我通过做以下两件事来压缩了一个小的速度改进:
library(shiny); library(ggplot2); library(dplyr)
# Dataset
data_=do.call("rbind", replicate(1000, mtcars, simplify = FALSE))
# General graphic
ui=fluidPage(
fluidRow(
column(width = 12,
selectInput("choice", "Highlight in red when carb=",1, choices = c(1:4,6,8)),
plotOutput("plot1"))
)
)
server=function(input, output) {
cols <- reactive({
cols <- c("1" = "black", "2" = "black", "3" = "black",
"4" = "black", "6" = "black", "8" = "black")
cols[input$choice] <- "red"
return(cols)
})
output$plot1=renderPlot({
ggplot(data_, aes(x=wt, y=mpg, color = as.character(carb))) +
geom_point() +
scale_colour_manual(values = cols()) +
facet_wrap(~carb)
})
}
shinyApp(ui, server)
关于r - 如何在不重新加载所有内容的情况下突出显示带有 Shiny 刻面的ggplot上的点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49494664/
有没有一种方法可以“标记”对象的属性,使它们在反射中“突出”? 例如: class A { int aa, b; string s1, s2; public int AA
我是一名优秀的程序员,十分优秀!