JRUBY=defined?(JRUBY_VERSION) include Java require 'ChartDirector.jar' require 'servlet-api.jar' include_class 'ChartDirector.Chart' class ChartDirector < Chart include_class 'ChartDirector.Chart' include_class 'ChartDirector.BaseChart' include_class 'ChartDirector.XYChart' include_class 'ChartDirector.PieChart' endIf you want more chart types just include more classess inside ChartDirector class declaration.
Now it can Ruby charting code needs some modifications
data0 = data.collect{|i| i["avg_response"]} data1 = data.collect{|i| i["avg_max_response"]} labels = data.collect{|i| i["c_name"]} if JRUBY data0 = data0.to_java(:double) data1 = data1.to_java(:double) labels = labels.to_java(:string) end c = ChartDirector::XYChart.new(620, 280) c.setPlotArea(300, 30, 300, 200, 0xf8f8f8, 0xffffff) c.addLegend(50, 0, false, "arial.ttf", 8).setBackground( ChartDirector::Transparent) c.xAxis().setLabels(labels) c.xAxis().setLabelStyle("arial.ttf", 8, 0x000000, 0).setMaxWidth(300) c.xAxis().setTickLength(0) c.swapXY(true) c.yAxis().setTitle("Time in seconds") layer = c.addBarLayer2(ChartDirector::Side) layer.addDataSet(data1, 0xff8080, "Average Max Response Time") layer.addDataSet(data0, 0x80ff80, "Average Response Time") layer.setOverlapRatio(0.5) result_image = c.makeChart2(ChartDirector::PNG) result_image = String::from_java_bytes(result_image) if JRUBY send_data(result_image, :type => "image/png",:disposition => "inline")