2016-12-06 1 views
1

bar plot (plotly 패키지 포함)을 만들고 싶습니다. (몇 달 동안) red horizontal line (얻을 수있는 이득)이됩니다. 아래 그림은 내 문제를보다 정확하게 보여줍니다.x 축이 이산되어있을 때 음영의 수평선

enter image description here

코드 및 데이터 첫번째 플롯을 얻기 위해 필요한 :

library("plotly") 
library("dplyr") 

data.frame(miesiac_label = as.character(as.roman(c(1:12))), 
      miesiac = c(1:12), 
      ile = c(12000, 12100, 11100, 12000, 12000, 11900, 12200, 12100, 6000, 12100, 12100, 12100), 
      gain = c(rep(NA, 7), 11000, 12000, 12000, 12000, 12000)) -> dane 
dane$miesiac_label <- factor(dane$miesiac_label, levels = dane[["miesiac_label"]]) 

plot_ly(dane) %>% 
    add_trace(x = ~miesiac_label, y = ~ile, 
       type = 'bar', marker = list(color = '#99d3df')) %>% 
    add_trace(x = ~miesiac_label, y = ~gain, name = 'Gain', 
       type = "scatter", mode='lines+markers', marker = list(color = 'red'), 
       line = list(color = 'red')) 

내가이 일을 지속적으로 규모를 가지고 있고,이 후 단지 x axis labels을 변경해야한다고 생각하지만, 나는 방법을 모른다 그 레이블을 바꾸려면 (물론 Google에서 먼저 찾으려고 노력했습니다.) ...

도움을 주셔서 감사합니다.

+0

코드가 비어있는 음모를 보여줍니다. 올바른지 확인하십시오. –

+0

@MarijnStevering, 네, 방금 다시 한번 확인해 보았습니다. 맞습니다. – Marta

+0

아, 나의 플롯을 고쳐서 업데이트해라, 나쁘다. –

답변

1

그런 점이 좋을까요? 숫자는 add_segments으로 조정할 수 있습니다.

a <- list(
    title = "miesiac_label", 
    showticklabels = TRUE, 
    tickmode= "array", 
    ticktext = as.character(as.roman(c(1:12))), 
tickvals = c(1:12) 
) 

plot_ly(dane) %>% 
    add_bars(x = ~miesiac, y = ~ile) %>% 
    add_segments(x = 7.5, xend = 8.5, y = 10000, yend = ~10000, line = list(dash = "dash")) %>% 
    add_segments(x = 8.5, xend = 12.5, y = 12000, yend = ~12000, line = list(dash = "dash")) %>% 
    layout(showlegend = FALSE, xaxis = a) 
1

난 당신이 가져가에 무시 무시한 도구 설명에 이르게 ggplot 표준을 위해 일반적으로 그 일을 ggplot와 환상적인 ggplotly()

를 사용하여 원하는 구성 관리해야하지만이 text 미적과의 tooltip 인수 불통 될 수있다 ggplotly 전화

예를 들어

:

다음 플롯 결과
ggplot(dane, aes(x = miesiac_label, y = ile)) + 
    geom_bar(aes(text = paste("x:", miesiac_label, "y:",ile)), 
          stat = "identity", fill = "#99d3df") + 
    geom_segment(aes(x = miesiac - 0.5, xend = miesiac + 0.5, 
        y = gain, yend = gain, 
        text = paste0("gain: ",gain)) 
       , colour = "red" 
       , linetype = 2) 

ggplotly(tooltip = "text") 

: enter image description here

+0

고마워,하지만 실제로'ggplot2'로 어떻게하는지 안다. :) 그리고 나는'ggplotly()'를 사용하지 않는 몇 가지 이유가있다. , 나는 진짜로 그들을 기억하지 않는다 :) 나는 몇몇'음모'의 해결책을 찾고있다. – Marta

+0

아, 그러면 내 '음모'경험이 모두'ggplotly'를 통해 있기 때문에 나는 도움이되지 않습니다. –

+0

고마워요, 어쨌든 :) – Marta