2017-04-20 1 views
1

ggplot2를 사용하여 timeseries의 라인 플롯을 작성하고 플롯으로 변환하려고합니다. 이 플롯의 배경 부분은 다른 색상으로 음영 처리되어 있습니다 (예 : Using geom_rect for time series shading in R). 불행히도 geom_rect뿐만 아니라 annotate()도 ggplotly 객체로 전송되지 않습니다. 그러므로 나는 소급 (이 예에 따라 : https://plot.ly/r/shapes/) plotly 코드를 사용하여 모양을 추가하려고하지만,이 재현 예와 같이 그것은 어느 작동하지 않습니다 :ggplotly-object의 부분 음영 처리 된 배경

library(plotly) 
library(ggplot2) 

plot <-ggplot(data = economics, aes(x = date, y = unemploy)) + geom_line() 

plot <- ggplotly(plot) 

layout(plot, 
     shapes = list(
     list(type = "rect", 
       fillcolor = "blue", line = list(color = "blue"), opacity = 0.9, 
       x0 = "1980-01-01", x1 = "1990-01-01", 
       y0 = 0, y1 = 4000 
     ) 
     ) 
) 

그래서 어떻게이 음영을 얻을 수 있습니다 내 ggplotly 개체? 음모로 전체 음모를 재현하는 것은 불행히도 불가능합니다.

감사합니다!

답변

0

ggplotly을 도형으로 작업하려면 변환에서 오는 모양을 먼저 지워야합니다 (처음 왜 거기에 있는지 알 수 있습니다).

plot[['x']][['layout']][['shapes']] <- c() 

당신은 당신의 plot 객체에 layout 기능을 할당해야합니다.


library(plotly) 
library(ggplot2) 

plot <-ggplot(data = economics, aes(x = date, y = unemploy)) + geom_line() 
plot <- ggplotly(plot) 

plot[['x']][['layout']][['shapes']] <- c() 

plot <- layout(plot, 
     shapes = list(
     list(type = "rect", 
       fillcolor = "blue", line = list(color = "blue"), opacity = 0.5, 
       x0 = "1980-01-01", x1 = "1990-01-01", 
       y0 = 6000, y1 = 8000 
     ) 
     ) 
) 
plot 

업데이트

enter image description here

plot <- layout(plot, 
     shapes = list(
     list(type = "rect", 
       fillcolor = "blue", line = list(color = "blue"), opacity = 0.9, 
       x0 = "1980-01-01", x1 = "1990-01-01", 
       y0 = 0, y1 = 4000 
     ) 
     ) 
) 

: plotly` or gplot`` 중 하나가이 날짜를 처리하는 방법 변경 보인다. 대신 문자열 날짜를 전달하는, 하나는해야한다, 즉 지금의 정수를 전달해야합니다 :

x0 = 315532800000, x1 = 631152000000 

올바른 결과를 얻을 수 있습니다.

+0

이것은 믿을 수 없다. 나는 그런 생각을하지 못했다. 정말 고맙습니다! – aeq