2017-12-21 8 views
0

HighcharterのPolarグラフを使用しており、条件に基づいて色を変更できるかどうかは疑問でした。私はグラフを使って予算対消費額を調べています。予算<を使うと、列が緑色になりたいと思います。予算>予算の場合は、列を赤色にしたいと思います。これは可能ですか?R Highcharter:条件付きカラーの極座標

「Logistics」と「IT & Telecom」のコードの例は緑色で、他のすべての費用は赤色になります。

計画が過ぎている、または計画されていないものが絶えず変化しているので、答えは動的である必要があります。

以下は、コードの簡略化されたバージョンです。

library (shiny) 
library (highcharter) 

hc <- highchart() %>% 
    hc_chart(polar = TRUE) %>% 
    hc_title(text = "Budget vs Spending") %>% 
    hc_xAxis(categories = c("Energy", "Facilties", "IT & Telecom", 
          "Logistics", "Office Products", "Plant Consumables", 
          "Temp Labor", "Travel", "Other"), 
      tickmarkPlacement = "on", 
      lineWidth = 0) %>% 
    hc_yAxis(gridLineInterpolation = "polygon", 
      lineWidth = 0, 
      min = 0) %>% 
    hc_series(
    list(
     name = "Spend", 
     data = c(50000, 39000, 42000, 31000, 26000, 14000, 26000, 26000, 26000), 
     pointPlacement = "on", 
     type = "column" 
    ), 
    list(
     name = "Budget", 
     data = c(43000, 19000, 60000, 35000, 17000, 10000,10000,10000,10000), 
     pointPlacement = "on", 
     type = "line" 
    ) 
) 

hc 
+0

を支援Highcharts JS私は 'chart.events.render'プロパティで更新を担当するコードを記述します:http://jsfiddle.net/kkulig/88mb6mq8/' redrawEnabled'フラグを使用して、チャートを再描画することによって引き起こされる無限再帰的ループを防ぎますこのイベント内で( 'render'は' rエドロー」イベント)。 –

答えて

1

こんにちはあなたはTRUEcolorByPointを設定したいとcolors

library (shiny) 
library (highcharter) 
library(tidyverse) 
hc <- highchart() %>% 
    hc_chart(polar = TRUE) %>% 
    hc_title(text = "Budget vs Spending") %>% 
    hc_xAxis(categories = c("Energy", "Facilties", "IT & Telecom", 
          "Logistics", "Office Products", "Plant Consumables", 
          "Temp Labor", "Travel", "Other"), 
      tickmarkPlacement = "on", 
      lineWidth = 0) %>% 
    hc_yAxis(gridLineInterpolation = "polygon", 
      lineWidth = 0, 
      min = 0) %>% 
    hc_series(
    list(
     name = "Spend", 
     data = c(50000, 39000, 42000, 31000, 26000, 14000, 26000, 26000, 26000), 
     pointPlacement = "on", 
     colorByPoint = TRUE, 
     type = "column", 
     colors = ifelse(c(50000, 39000, 42000, 31000, 26000, 14000, 26000, 26000, 26000) > c(43000, 19000, 60000, 35000, 17000, 10000,10000,10000,10000),"#F00","#0F0") 
    ), 
    list(
     name = "Budget", 
     data = c(43000, 19000, 60000, 35000, 17000, 10000,10000,10000,10000), 
     pointPlacement = "on", 
     type = "line" 
    ) 
) 

hc 

このような希望を設定するために使用 ifesleが、これは私がRについて多くを知っているが、中にはありません

+0

これは完全に動作します、ありがとう! – Kevin