2017-10-25 19 views
1

をプロットするときの色を修正するためにどのように同じ機能GRPによってグループ化され、plotly使用ライン、バーグラフを重ね。
私は線と棒の両方に固定色を使用する必要があります。Rはplotly - 私がプロットしようとしているグループ化されたチャート

私は最初のバーのトレースを追加するときにはうまく機能:

library(plotly) 

df <- data.frame(year = rep((2000:2017), each=2), 
      grp = rep(c("Grp1", "Grp2"), 18), 
      y1 = rnorm(36, 100, 40), 
      y2 = rnorm(36, 50, 10) 
      ) 


plot_ly(df) %>% 
    add_trace(x = ~year, y = ~y1, 
      type = 'bar', 
      yaxis = "y2", 
      opacity = .4, 
      color = ~grp, 
      colors = colorRamp(c("grey", "black"))) %>% 
    add_trace(x = ~year, y = ~y2, 
      type = 'scatter', 
      mode = 'lines+markers', 
      linetype = ~grp, 
      line = list(color = "red")) %>% 
    layout(yaxis2 = list(overlaying = "y", 
        side = "right")) 

enter image description here

しかし、私はバーのトレースとライントレースを切り替える場合は、バーの私の色の選択が消えます。

plot_ly(df) %>% 
    add_trace(x = ~year, y = ~y2, 
      type = 'scatter', 
      mode = 'lines+markers', 
      linetype = ~grp, 
      line = list(color = "red")) %>% 
    add_trace(x = ~year, y = ~y1, 
      type = 'bar', 
      yaxis = "y2", 
      opacity = .4, 
      color = ~grp, 
      colors = colorRamp(c("grey", "black"))) %>% 
    layout(yaxis2 = list(overlaying = "y", 
        side = "right")) 

enter image description here

明らかに私の構文が正しくありません:誰かが色は順序があるものは何でも安定していることを確認するために、適切にこのコードを書く方法を知っているのですか?

多くの感謝!

答えて

0

plot_ly内部colorsをspecifiyするようにしてください:

plot_ly(df, colors = colorRamp(c("grey", "black"))) %>% 
    add_trace(x = ~year, y = ~y2, 
     type = 'scatter', 
     mode = 'lines+markers', 
     linetype = ~grp, 
     line = list(color = "red")) %>% 
    add_trace(x = ~year, y = ~y1, 
     type = 'bar', 
     yaxis = "y2", 
     opacity = .4, 
     color = ~grp) %>% 
    layout(yaxis2 = list(overlaying = "y", 
     side = "right")) 

enter image description here

+0

働くOK THX。しかし、なぜadd_lines()を切り替えるのが異なる出力を持つのかまだ分かりません。私はそれを正しい方法で使用しないと思いますが、正しい方法は何ですか? – Flecflec

+0

@Flecflec私の答えは、 'plot_ly'の中に' colors'を指定することを提案しています。これは、色が安定しているかどうかを確認するために、このコードを適切に記述するための方法です。私はこれがあなたの質問に対する答えだと思います。私はそれがなぜ機能するのかについて明確な説明がないが、それは機能する。 –

関連する問題