2017-09-04 112 views
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

我想plotly不具有用於'geom_rect'你們支持,請參見[可用選項= geom_abline(),geom_bar()等](https://plot.ly/ggplot2/ ) – parth

回答

2

您可以通過geom_bar獲得陰影區域爲plotly。正如上文評論中指出的,情節確實支持這一點。

# 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

+0

我已經接受了答案。我有一個相關的問題,[鏈接](https://stackoverflow.com/questions/46042358/shaded-area-does-not-show-up-in-plotly-when-using-dates) – Aex