首页 文章

阴影区域未显示在阴影对象中

提问于
浏览
0

我已经构建了一个具有阴影区域的ggplot2对象 . 不幸的是,当将ggplotly应用于ggplot2对象时,我无法将这些阴影区域显示出来 .


library(ggplot2)
library(plotly)

#data
theDataFrame <- data.frame(game = c(1.0, 2.0, 1.0, 2.0), score = c(1:4), season = c("2000","2000","2001","2001"))
dataFrameForShadedAreas <- data.frame(theXmin = c(1.1, 1.5, 1.8), theXmax = c(1.2, 1.6, 1.9), dummyColors = c(4,7,9))

ggplotObj <- ggplot2::ggplot(data = theDataFrame, aes(x = game, y = score, color = season)) +
                ggplot2::geom_line() +
                ggplot2::geom_rect(data = dataFrameForShadedAreas, inherit.aes = FALSE,
                                  aes(xmin = theXmin, xmax = theXmax, ymin = -Inf, ymax = +Inf),
                                  #group = dummyColors),
                                  fill = 'turquoise3', alpha = 0.2)

(thePlotlyObj <- ggplotly(ggplotObj))

ggplot2对象(带阴影区域)如下所示


Plot with shaded areas

1 回答

  • 2

    您可以通过 geom_bar 将阴影区域绘制成阴影 . 正如上面评论中提到的那样,情节确实支持这一点 .

    # define theX as middle point between theXmin & theXmax
    dataFrameForShadedAreas$theX = rowMeans(dataFrameForShadedAreas[,1:2])
    
    ggplotObj <- ggplot(data = theDataFrame, aes(x = game, y = score, color = season)) +
      geom_line() +
      geom_bar(data = dataFrameForShadedAreas, inherit.aes = FALSE,
               aes(x = theX, y = 100), # y should be set to some height beyond the chart's range; y = Inf doesn't work
               stat = "identity", position = "stack", width = 0.1,
               fill = "turquoise3", alpha = 0.2) +
      coord_cartesian(ylim = c(1, 4)) # set limit for y-axis range here
    

    plotly chart

相关问题