michelson / lazy_high_charts

Make highcharts a la ruby , works in rails 5.X / 4.X / 3.X, and other ruby web frameworks
http://www.suipit.com
MIT License
1.05k stars 243 forks source link

Area chart not working #233

Open Shekharrajak opened 7 years ago

Shekharrajak commented 7 years ago

I am trying Area chart in my simple rails application. But I am not getting chart. I am able to get title, subtitles, legend and Axis but not the main chart.

In controller :

    @area1 = LazyHighCharts::HighChart.new('my_id8') do |f|
      f.chart( {
          :defaultSeriesType=>"area"
      })
      f.title( {
          :text => 'US and USSR nuclear stockpiles'
      })
      f.subtitle( {
          :text => 'Source: <a href="http://thebulletin.metapress.com/content/c4120650912x74k7/fulltext.pdf">' +
              'thebulletin.metapress.com</a>'
      })
      f.xAxis( {
          :allowDecimals => false,
          :labels => {
          :formatter => function () {
                return this.value; // clean, unformatted number for year
            }
          }
      })
      f.yAxis( {
          :title => {
              :text=> 'Nuclear weapon states'
          },
          :labels => {
          :formatter=> function () {
                return this.value / 1000 + 'k';
            }
      })
      f.tooltip( {
          :pointFormat => '{series.name} produced <b>{point.y:,.0f}</b><br/>warheads in {point.x}'
      })
      f.plotOptions( {
          :area => {
              :pointStart => 1940,
              :marker => {
                  :enabled => false,
                  :symbol => 'circle',
                  :radius => 2,
                  :states => {
                      :hover => {
                          :enabled => true
                      }
                  }
              }
          }
      })
      f.series(
          :name => 'USA',
          :data => [nil, nil, nil, nil, nil, 6, 11, 32, 110, 235, 369, 640,
              1005, 1436, 2063, 3057, 4618, 6444, 9822, 15468, 20434, 24126,
              27387, 29459, 31056, 31982, 32040, 31233, 29224, 27342, 26662,
              26956, 27912, 28999, 28965, 27826, 25579, 25722, 24826, 24605,
              24304, 23464, 23708, 24099, 24357, 24237, 24401, 24344, 23586,
              22380, 21004, 17287, 14747, 13076, 12555, 12144, 11009, 10950,
              10871, 10824, 10577, 10527, 10475, 10421, 10358, 10295, 10104]
      )
      f.series(
          :name => 'USSR/Russia',
          :data => [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
              5, 25, 50, 120, 150, 200, 426, 660, 869, 1060, 1605, 2471, 3322,
              4238, 5221, 6129, 7089, 8339, 9399, 10538, 11643, 13092, 14478,
              15915, 17385, 19055, 21205, 23044, 25393, 27935, 30062, 32049,
              33952, 35804, 37431, 39197, 45000, 43000, 41000, 39000, 37000,
              35000, 33000, 31000, 29000, 27000, 25000, 24000, 23000, 22000,
              21000, 20000, 19000, 18000, 18000, 17000, 16000]
      )
    end

In view :

<%= high_chart("my_id8", @area1) %>

Let me know my mistake. Thanks!

Shekharrajak commented 7 years ago

Ping @michelson

dpedoneze commented 6 years ago

@Shekharrajak you can't have nil in your serie's data, make it null instead 😄 (Or smth else)