首页 > 解决方案 > 如何在闪亮的情况下改变绘图的背景颜色?

问题描述

我想知道是否可以更改或至少使其透明以允许继承其父背景,我已经尝试过background-colorplot

用户界面:

plotOutput("scatterChart",
                       width = "80%",
                       height = "294px")

服务器:

  output$scatterChart <- renderPlot({
    par(bg = "yellow")
    plot(rules(), col  = rainbow(25), cex  = input$cex)
  })

如此处所示:https ://stat.ethz.ch/pipermail/r-help/2003-May/033971.html

但没有任何改变。

我用 css 试过了:

#scatterChart{
  background-color:red}

我没有得到预期的结果。

或者 :

.shiny-plot-output{
  background-color:red
}

这改变了整个 div 背景,我什至看不到情节本身(我期待着)。

这是一张图片: 演示

编辑:

根据thothal给我的例子,我发现问题出在传递给绘图函数的数据上(它只是一些association rules使用Apriori算法获得的):

rules <- reactive({
    head(read.csv(input$file$datapath), input$visualization)
    transactions = read.transactions(
      file = file(input$file$datapath),
      format = "basket",
      sep = ","
    )
    minValue <- min(length(transactions),input$visualization)
    rules <-
      apriori(transactions[0:minValue],
              parameter = list(
                support = input$min_supp,
                confidence = input$min_conf
              ))
    return(rules)
  })

任何建议或意见将不胜感激。谢谢。

标签: rshiny

解决方案


实际上,您可以像这样简单地更改绘图的背景颜色

library(shiny)
ui <- fluidPage(plotOutput("p"), actionButton("go", "Go"))

server <- function(input, output) {

   output$p <- renderPlot({
      input$go
      par(bg = "navyblue")
      x <- rnorm(100)
      plot(x, 5 * x + rnorm(100, sd = .3), col = "white")
   })
}

shinyApp(ui, server)

这会在我的机器上生成以下图:

彩色背景

当您尝试相同时,我想知道如果您尝试在外部创建情节会发生什么情况,shiny它是否显示(通过相应的par调用)彩色背景?

也许您应用程序中的其他一些设置可能会覆盖此行为。你能试着运行我的代码看看会发生什么吗?


如果您使用另一个绘图库(ggplot例如),您必须适应和使用

theme(plot.background = element_rect(...), # plotting canvas
      panel.background = element_rect(...)) # panel

更新

事实证明,罪魁祸首是arulesViz:::plot.rules基于网格并忽略通过设置的设置par。要获得彩色背景,我们必须rect在右侧添加一个填充viewport

我分叉了原始存储库并提供了一个快速修复:

devtools::install_github("thothal/arulesViz@add_bg_option_scatterplot")
data(Groceries)
rules <- apriori(Groceries, parameter=list(support=0.001, confidence=0.8))

## with my quick fiy you can now specify a 'bg'  option to 'control'

plot(rules, control = list(bg = "steelblue")

彩色 aViz BG


推荐阅读