2016-09-20 8 views
1

shinyアプリで対話型グラフ作成のためにplot.lyライブラリを使用していますが、グラフの色を管理する際に問題が発生しています。plot.lyのRで色を管理する

plotly 4.3.5(githubから)を使用して再現性の例は:

library(data.table) 
library(plotly) 

dt <- data.table(campaign_week = c(1,2,3,1,2,3), category = c(rep("income",3),rep("cost",3)), 
       amount = c(100,50,35,-500,-20,-15)) 
dt_net <- dt[, .(amount = sum(amount)), by = campaign_week][,.(campaign_week, amount = cumsum(amount))] 

y <- list(title = "Income", tickformat = "$,.0f",hoverformat = "$,.2f") 

plot_ly(dt_net, x = ~campaign_week, y = ~amount, type = "scatter", 
     mode= "lines+markers", 
     line = list(color = "#00AEFF"), name = "Net Income") %>% 
    add_trace(data = dt, x = ~campaign_week, y = ~amount, color = ~category, type = "bar", 
      colors = c("#00ff00", "#ff0000")) %>% 
    layout(yaxis = y, barmode = "relative") 

これは私が欲しいチャート、しかし色がtraceに正しく適用されていないが作成されます。私は線が青の色合いである間、バーの1つが赤で、もう1つが緑であることを期待しています。

EDITplotlyチャートのスクリーンショットを追加します。私は電話を元に戻すとinherit=FALSEを追加

Current plotly output

+0

これは私のために '〜'を削除します。あなたのプロットはどのように見えますか? –

+0

提供された元のコードに基づいて画像を追加しました。 '〜'を取り除くことに応答して; 'object 'campaign_week' not found'というエラーメッセージが表示されます。 – Dan

+0

@VanceLopezどのようなプロットバージョンを使用していますか? OP参照ver。以前のバージョンからいくつかの構文と動作の変更が行われている4.3.5(githubの開発版) – dww

答えて

1

https://plot.ly/r/bar-charts/#bar-chart-with-relative-barmodeの例に基づいて、各カテゴリの別々のadd_traceがあります。

plot_ly(dt_net, x = ~campaign_week, y = ~amount, type = "scatter", 
     mode= "lines+markers", 
     line = list(color = "#00AEFF"), name = "Net Income") %>% 
    add_trace(data = dt[category=="income",] , x = ~campaign_week, y = ~amount, type = "bar", name = "income", 
      marker=list(color = "#00ff00")) %>% 
    add_trace(data = dt[category=="cost",] , x = ~campaign_week, y = ~amount, type = "bar", name = "cost", 
      marker=list(color = "#ff0000")) %>% 
    layout(yaxis = y, barmode = "relative") 

enter image description here

注棒グラフトレースが散布図からmodeline属性を継承しますが、これらの属性は、バーではサポートされませんので、これは、警告を与えます。あなたは警告を無視するか、散らばる前にbarchartを呼び出して避けることができます。このように:

plot_ly() %>% 
    add_trace(data = dt[category=="income",] , x = ~campaign_week, y = ~amount, type = "bar", name = "income", 
      marker=list(color = "#00ff00")) %>% 
    add_trace(data = dt[category=="cost",] , x = ~campaign_week, y = ~amount, type = "bar", name = "cost", 
      marker=list(color = "#ff0000")) %>% 
    add_trace(data = dt_net, x = ~campaign_week, y = ~amount, type = "scatter", mode= "lines+markers", 
      line = list(color = "#00AEFF"), name = "Net Income") %>% 
    layout(yaxis = y, barmode = "relative") 
+0

最もクリーンな解決策ではありませんが(私はいつか他のカテゴリで終わると思いますが)、私はこの時点で得られる可能性が最も高いと思います。 – Dan

+1

@ Dan多くのカテゴリで終わる場合は、ループで追加できます。例えば[ここ](http://stackoverflow.com/a/39420523/2761575)を参照してください。 – dww

0

を作成しました:

library(data.table) 
library(plotly) 

dt <- data.table(campaign_week = c(1,2,3,1,2,3), category = c(rep("income",3),rep("cost",3)), 
       amount = c(100,50,35,-500,-20,-15)) 
dt_net <- dt[, .(amount = sum(amount)), by = campaign_week][,.(campaign_week, amount = cumsum(amount))] 

y <- list(title = "Income", tickformat = "$,.0f",hoverformat = "$,.2f") 

plot_ly(data=dt, x = ~campaign_week, y = ~amount, color = ~category, type = "bar", 
      colors = c("#00ff00", "#ff0000")) %>% 
    add_trace(data=dt_net, x = ~campaign_week, y = dt_net$amount, type = "scatter", 
      mode= "lines+markers", 
      line = list(color = "#00AEFF"), name = "Net Income", inherit=FALSE) %>% 
    layout(yaxis = y, barmode = "relative") 

はまだ伝説に問題があります。

enter image description here

+0

「収入」の凡例の色がチャートに表示されているものと一致しない理由について、非常に有望です。 – Dan

+0

'plot_ly(data = dt、x =〜campaign_week、y =〜amount、color =〜category、type =" bar ")' – HubertL

+0

エラーが発生しました。エラーeval(expr、 envir、enclos):オブジェクト 'category'が見つかりませんでした。 – Dan

関連する問題