R闪亮和ggplot2:如何使几何图形的边框透明?

R闪亮和ggplot2:如何使几何图形的边框透明?,r,ggplot2,shiny,transparency,geom-col,R,Ggplot2,Shiny,Transparency,Geom Col,我想使geom_col的边界透明。仅当使用ggplot2时,此选项有效: library(ggplot2) dataToPlot <- data.frame(Freq = c(0.0000000, 0.7092199, 1.4184397, 2.1276596, 2.8368794), variable = rep('A',5), value = c(43089.76, 62923.17, 35446.15, 29553.76, 22

我想使geom_col的边界透明。仅当使用ggplot2时,此选项有效:

library(ggplot2)

dataToPlot <- data.frame(Freq = c(0.0000000, 0.7092199, 1.4184397, 2.1276596, 2.8368794), 
                          variable = rep('A',5), value = c(43089.76, 62923.17, 35446.15, 29553.76, 22433.08))

p <- ggplot( dataToPlot , aes(x=Freq, y = value, group = variable   )  ) +  #
  # geom_bar(stat = "bin") fill = variable, 
  geom_col( mapping = aes(col = variable, fill = variable), colour = F,  alpha = 0.2, orientation = "x", position = "dodge") + 
  # scale_linetype(aes(linetype = 0))
  guides(color = FALSE)

dev.new(); p
库(ggplot2)

dataToPlot您正在犯一些错误

首先,您忘了提到您也在使用包
shinyjs
plotly

其次,在服务器部件中使用
renderpltly
,但在ui中调用
plotOutput
。正确的选项是ui中的
plotlyOutput
,因为您需要一个plotly图形

另一件事是:由于您需要一种绘图类型的图形,因此必须将ggplot图形
p
转换为绘图类型。因此,您应该将
ggplotly(p)
添加到服务器部件中

最后,为了解决边界问题,应该使用
color=NA
而不是
color=FALSE
。第二种方法适用于ggplot2,但不适用于plotly。我不知道确切的原因。也许有人可以澄清这一点

因此,您的代码应该如下所示:

library(ggplot2)
library(shiny)
library(shinyjs)
library(plotly)

dataToPlot <- data.frame(Freq = c(0.0000000, 0.7092199, 1.4184397, 2.1276596, 2.8368794),
                         variable = rep('A',5), 
                         value = c(43089.76, 62923.17, 35446.15, 29553.76, 22433.08))

ui <- fluidPage( 
  useShinyjs(),
  fluidRow( 
    column(8,
           plotlyOutput("plot")
    )
  )
)

server <- function(input, output) {
  output$plot <- renderPlotly({
    p <- ggplot(dataToPlot , aes(x=Freq, y = value, group = variable)) +
      geom_col(mapping = aes(col = variable, fill = variable), colour = NA,  alpha = 0.2, orientation = "x", position = "dodge") + 
      guides(color = FALSE)

    ggplotly(p)
  })
}

shinyApp(ui,server)
库(ggplot2)
图书馆(闪亮)
图书馆(shinyjs)
图书馆(绘本)
dataToPlot
library(ggplot2)
library(shiny)
library(shinyjs)
library(plotly)

dataToPlot <- data.frame(Freq = c(0.0000000, 0.7092199, 1.4184397, 2.1276596, 2.8368794),
                         variable = rep('A',5), 
                         value = c(43089.76, 62923.17, 35446.15, 29553.76, 22433.08))

ui <- fluidPage( 
  useShinyjs(),
  fluidRow( 
    column(8,
           plotlyOutput("plot")
    )
  )
)

server <- function(input, output) {
  output$plot <- renderPlotly({
    p <- ggplot(dataToPlot , aes(x=Freq, y = value, group = variable)) +
      geom_col(mapping = aes(col = variable, fill = variable), colour = NA,  alpha = 0.2, orientation = "x", position = "dodge") + 
      guides(color = FALSE)

    ggplotly(p)
  })
}

shinyApp(ui,server)