2017-03-23 7 views
1

私は積み重なった棒グラフを作成しており、フィルタによってはデータセットが変更されます。プロットチャートのデフォルトカラーを変更するにはどうすればよいですか?

データセットは次のようになります。

tabNew <- structure(list(Group = c("2016-11", "2016-12", "2017-01", "2017- 
02", "2017-03"), 
`Did Not Meet Expectations` = c(3, 0.8, 1.5, 0.8, 1.7), 
`Exceeded Expectations` = c(45, 50.6, 32.3, 49.5, 55.6), 
`Met Expectations` = c(51.2, 48.5, 66.2, 49.5, 42.4), 
Unacceptable = c(0.7, 0, 0, 0.1, 0.2)),                        
.Names = c("Group", "Did Not Meet Expectations", 
"Exceeded Expectations", "Met Expectations", "Unacceptable"),                                  
row.names = c(NA, -5L), class = "data.frame") 

チャートをプロットするためのコードを以下のようである:

x <- list(
    title = "Time" 
) 
y <- list(
    title = "Percent" 
) 

p <- plot_ly(tabNew, x = ~Group, y = ~`Unacceptable`, colors = c("red", "yellow", "green", "blue"), 
      name = 'Unacceptable', type = 'scatter', mode = 'lines') %>% 
    add_trace(y = ~`Did Not Meet Expectations`, name = 'Did Not Meet Expectations') %>% 
    add_trace(y = ~`Met Expectations`, name = 'Met Expectations') %>% 
    add_trace(y = ~`Exceeded Expectations`, name = 'Exceeded Expectations') %>% 
    layout(xaxis = x, yaxis = y) 

のようにチャートが見えます:このデータセットは

enter image description here

Groupがを表す例。場合によってはフィルタに基づいて、GroupQuartersを表すことがあります。そのような場合、他の列はすべてではありません。だから、Did Not Meet ExpectationsExceeded ExpectationsMet Expectationsしか持っていない可能性があります。

どちらの場合でも、デフォルトの色は欲しくないです。 RedDid Not Meet Expectationsと表示される場合は、Unacceptableとなります。Yellowと表示され、同様にMet Expectationsは、BlueExceeded Expectationsとして、Greenとなります。この注文を指定する方法はありますか?

答えて

1
require(plotly) 

df <- data.frame(
    Group  = c("2016-11", "2016-12", "2017-01", "2017-02", "2017-03"), 
    DidNot  = c(3, 0.8, 1.5, 0.8, 1.7), 
    Exceeded  = c(45, 50.6, 32.3, 49.5, 55.6), 
    Met   = c(0.7, 0, 0, 0.1, 0.2), 
    Unacceptable = c(0.7, 0, 0, 0.1, 0.2) 
) 

plot_ly(df, x = ~Group) %>% 
    add_trace(y = ~Exceeded, 
      name = "Exceeded Expectations", 
      type = "scatter", 
      mode = "lines", 
      line = list(color = "green")) %>% 
    add_trace(y = ~Unacceptable, 
      name = "Unacceptable", 
      type = "scatter", 
      mode = "lines", 
      line = list(color = "red")) %>% 
    layout(xaxis = list(title = "Time"), 
     yaxis = list(title = "Percent")) 

このコードが生成します。

enter image description here

は、私はあなたのデータフレームの構文は、明らかに私と私にすっきりするように修正しましたあなたのためにすべてのラインを描いていないが、あなたは写真を手に入れる。

+0

ありがとう@ジェレミー。 'type'を' scatter'の代わりに 'bar'、' stack'を 'barmode'とするとどうなりますか?その場合、 'line'引数は無効です。どのように 'color'を指定しますか? – krish

1
p <- plot_ly(tabNew, x = ~Group, y = ~`Unacceptable`, 
    name = 'Unacceptable', type = 'scatter', mode = 'lines', 
    line=list(color="red")) %>% 
    add_trace(y = ~`Did Not Meet Expectations`, name = 'Did Not Meet Expectations', 
    line=list(color="yellow")) %>% 
    add_trace(y = ~`Met Expectations`, name = 'Met Expectations', 
    line=list(color="green")) %>% 
    add_trace(y = ~`Exceeded Expectations`, name = 'Exceeded Expectations',line=list(color="blue")) %>% 
    layout(xaxis = x, yaxis = y) 

あなたは、虹彩データセット

p <- plot_ly(data = iris, x = ~Sepal.Length, y = ~Petal.Length, color = ~Species, , colors=c("Red","Green","Blue")) 
を使用していた場合は、
+0

私のコードを更新しました。プロットを再現できるはずです。何らかの理由で、両方の例のコードを実行するとエラーが発生します。 – krish

+0

'iris'の例には余分な'、 'があります。そうでなければ動作します。 – krish

+0

私のデータセットのコードが機能しません。私はエラーを受け取ります - 'エラー:変数は長さ1または5でなければなりません。 問題変数: 'color'' – krish

関連する問題