Rails - Google_Visular column chart bar width -


i have added charts using google_visular gem. im trying figure out causing column chart created extremely thin columns when call order method on active record statement.

eg:

code generate chart:

  def self.get_graph(options={})      data_table = googlevisualr::datatable.new       data_table.new_column('datetime', 'date')       data_table.new_column('number', "#{options[:model_name]}")       options[:model_name].where(:generated_at => options[:start_date].beginning_of_day..options[:end_date].end_of_day).each |p|           data_table.add_row([p.generated_at.in_time_zone('pacific time (us & canada)'), p.__send__(options[:col_name])])       end        opts = { :width => 1100, :height => 280, :chartarea => {:width => 950, :height => 220}, :colors => [options[:color]], :legend => 'none' }        @chart = googlevisualr::interactive::columnchart.new(data_table, opts)   end 

code call method:

@users_chart  = graphing.get_graph({:model_name =>  user, :col_name => "users", :start_date => start_date, :end_date => end_date, :color => "#d48f00"}) 

javascript generate:

  google.load('visualization','1', {packages: ['corechart'], callback: function() {     var data_table = new google.visualization.datatable();data_table.addcolumn({"type":"datetime","label":"date"});data_table.addcolumn({"type":"number","label":"user"});data_table.addrow([{v: new date(2013, 6, 29, 20, 0, 0)}, {v: 182313}]);data_table.addrow([{v: new date(2013, 6, 29, 23, 0, 0)}, {v: 62751}]);data_table.addrow([{v: new date(2013, 6, 29, 17, 0, 0)}, {v: 234533}]);data_table.addrow([{v: new date(2013, 6, 29, 21, 0, 0)}, {v: 132029}]);data_table.addrow([{v: new date(2013, 6, 29, 22, 0, 0)}, {v: 92957}]);data_table.addrow([{v: new date(2013, 6, 29, 19, 0, 0)}, {v: 222587}]);data_table.addrow([{v: new date(2013, 6, 30, 0, 0, 0)}, {v: 9353}]);data_table.addrow([{v: new date(2013, 6, 29, 18, 0, 0)}, {v: 240253}]);data_table.addrow([{v: new date(2013, 6, 30, 10, 0, 0)}, {v: 240635}]);data_table.addrow([{v: new date(2013, 6, 30, 14, 0, 0)}, {v: 225663}]);data_table.addrow([{v: new date(2013, 6, 30, 1, 0, 0)}, {v: 34734}]);data_table.addrow([{v: new date(2013, 6, 30, 16, 0, 0)}, {v: 213179}]);data_table.addrow([{v: new date(2013, 6, 30, 2, 0, 0)}, {v: 31031}]);data_table.addrow([{v: new date(2013, 6, 30, 9, 0, 0)}, {v: 231830}]);data_table.addrow([{v: new date(2013, 6, 30, 12, 0, 0)}, {v: 247994}]);data_table.addrow([{v: new date(2013, 6, 30, 4, 0, 0)}, {v: 63644}]);data_table.addrow([{v: new date(2013, 6, 30, 6, 0, 0)}, {v: 151377}]);data_table.addrow([{v: new date(2013, 6, 30, 11, 0, 0)}, {v: 252827}]);data_table.addrow([{v: new date(2013, 6, 30, 13, 0, 0)}, {v: 244994}]);data_table.addrow([{v: new date(2013, 6, 30, 5, 0, 0)}, {v: 107412}]);data_table.addrow([{v: new date(2013, 6, 30, 15, 0, 0)}, {v: 214306}]);data_table.addrow([{v: new date(2013, 6, 30, 0, 0, 0)}, {v: 41760}]);data_table.addrow([{v: new date(2013, 6, 30, 8, 0, 0)}, {v: 199565}]);data_table.addrow([{v: new date(2013, 6, 30, 3, 0, 0)}, {v: 40525}]);data_table.addrow([{v: new date(2013, 6, 30, 7, 0, 0)}, {v: 185940}]);     var chart = new google.visualization.columnchart(document.getelementbyid('users_chart'));     chart.draw(data_table, {width: 1100, height: 280, chartarea: {width: 950, height: 220}, colors: ["#d48f00"], legend: "none"});   }}); 

output: output without order clause

however if change method include order eg:

def self.get_graph(options={})          data_table = googlevisualr::datatable.new           data_table.new_column('datetime', 'date')           data_table.new_column('number', "#{options[:model_name]}")           options[:model_name].where(:generated_at => options[:start_date].beginning_of_day..options[:end_date].end_of_day).order('generated_at asc').each |p|               data_table.add_row([p.generated_at.in_time_zone('pacific time (us & canada)'), p.__send__(options[:col_name])])           end            opts = { :width => 1100, :height => 280, :chartarea => {:width => 950, :height => 220}, :colors => [options[:color]], :legend => 'none' }            @chart = googlevisualr::interactive::columnchart.new(data_table, opts)       end 

javascript generated:

  google.load('visualization','1', {packages: ['corechart'], callback: function() {     var data_table = new google.visualization.datatable();data_table.addcolumn({"type":"datetime","label":"date"});data_table.addcolumn({"type":"number","label":"user"});data_table.addrow([{v: new date(2013, 6, 29, 17, 0, 0)}, {v: 234533}]);data_table.addrow([{v: new date(2013, 6, 29, 18, 0, 0)}, {v: 240253}]);data_table.addrow([{v: new date(2013, 6, 29, 19, 0, 0)}, {v: 222587}]);data_table.addrow([{v: new date(2013, 6, 29, 20, 0, 0)}, {v: 182313}]);data_table.addrow([{v: new date(2013, 6, 29, 21, 0, 0)}, {v: 132029}]);data_table.addrow([{v: new date(2013, 6, 29, 22, 0, 0)}, {v: 92957}]);data_table.addrow([{v: new date(2013, 6, 29, 23, 0, 0)}, {v: 62751}]);data_table.addrow([{v: new date(2013, 6, 30, 0, 0, 0)}, {v: 9353}]);data_table.addrow([{v: new date(2013, 6, 30, 0, 0, 0)}, {v: 41760}]);data_table.addrow([{v: new date(2013, 6, 30, 1, 0, 0)}, {v: 34734}]);data_table.addrow([{v: new date(2013, 6, 30, 2, 0, 0)}, {v: 31031}]);data_table.addrow([{v: new date(2013, 6, 30, 3, 0, 0)}, {v: 40525}]);data_table.addrow([{v: new date(2013, 6, 30, 4, 0, 0)}, {v: 63644}]);data_table.addrow([{v: new date(2013, 6, 30, 5, 0, 0)}, {v: 107412}]);data_table.addrow([{v: new date(2013, 6, 30, 6, 0, 0)}, {v: 151377}]);data_table.addrow([{v: new date(2013, 6, 30, 7, 0, 0)}, {v: 185940}]);data_table.addrow([{v: new date(2013, 6, 30, 8, 0, 0)}, {v: 199565}]);data_table.addrow([{v: new date(2013, 6, 30, 9, 0, 0)}, {v: 231830}]);data_table.addrow([{v: new date(2013, 6, 30, 10, 0, 0)}, {v: 240635}]);data_table.addrow([{v: new date(2013, 6, 30, 11, 0, 0)}, {v: 252827}]);data_table.addrow([{v: new date(2013, 6, 30, 12, 0, 0)}, {v: 247994}]);data_table.addrow([{v: new date(2013, 6, 30, 13, 0, 0)}, {v: 244994}]);data_table.addrow([{v: new date(2013, 6, 30, 14, 0, 0)}, {v: 225663}]);data_table.addrow([{v: new date(2013, 6, 30, 15, 0, 0)}, {v: 214306}]);data_table.addrow([{v: new date(2013, 6, 30, 16, 0, 0)}, {v: 213179}]);     var chart = new google.visualization.columnchart(document.getelementbyid('users_chart'));     chart.draw(data_table, {width: 1100, height: 280, chartarea: {width: 950, height: 220}, bar_groupwidth: "80%", colors: ["#d48f00"], legend: "none"});   }}); 

the generated chart looks like: image order clause

what can fix this? ( need order clause on there charts timescale linear)

you ending 2 rows of data single point in time:

data_table.addrow([{v: new date(2013, 6, 30, 0, 0, 0)}, {v: 9353}]); data_table.addrow([{v: new date(2013, 6, 30, 0, 0, 0)}, {v: 41760}]); 

which causing bars draw narrowly. can see results both lines in place (http://jsfiddle.net/asgallant/zhwnb/) vs 1 line commented out (http://jsfiddle.net/asgallant/zhwnb/1/).

fix duplicate line problem , fix bar width problem.

incidentally, bar group width option specified incorrectly, should bar:{groupwidth:"80%"}, not bar_groupwidth: "80%", shouldn't need use once have fixed rest.


Comments

Popular posts from this blog

basic authentication with http post params android -

vb.net - Virtual Keyboard commands -

How to get multiresult with multicondition in Sql Server -