Report abuse


			
require 'java' 

  include_class 'java.awt.Color'
  include_class 'java.awt.image.BufferedImage'
  include_class 'java.io.DataOutputStream'
  include_class 'java.io.FileOutputStream'
  include_class 'java.io.IOException'
  include_class 'java.util.Hashtable'


  include_class 'org.jfree.chart.axis.NumberAxis'
  include_class 'org.jfree.chart.encoders.ImageEncoder'
  include_class 'org.jfree.chart.encoders.ImageEncoderFactory'
  include_class 'org.jfree.chart.plot.PlotOrientation'
  include_class 'org.jfree.chart.plot.XYPlot'
  include_class 'org.jfree.chart.renderer.xy.XYLineAndShapeRenderer'
  include_class 'org.jfree.data.xy.XYDataset'
  include_class 'org.jfree.data.xy.XYSeries'
  include_class 'org.jfree.data.xy.XYSeriesCollection'
module Java
  include_package 'org.jfree.chart'
end



class LineChartDemo6

  def initialize(title)
    dataset = createDataset();
        chart = createChart(dataset);

        bufferedImage=chart.createBufferedImage(400,300);

        imageEncoder=ImageEncoderFactory.newInstance("png");


        begin
            imgData[] = imageEncoder.encode(bufferedImage);
            fos = FileOutputStream.new("C:\\out.png");
            ds = DataOutputStream.new( fos );
            ds.write(imgData, 0, imgData.length);
        rescue IOException => ioe
          System.out.println( "IO error: " + ioe ); 
        end
  end

  def createDataset
    series1 = XYSeries.new("First");
        series1.add(1.0, 1.0)
        series1.add(2.0, 4.0)
        series1.add(3.0, 3.0)
        series1.add(4.0, 5.0)
        series1.add(5.0, 5.0)
        series1.add(6.0, 7.0)
        series1.add(7.0, 7.0)
        series1.add(8.0, 8.0)


     series2 = XYSeries.new("Second")
        series2.add(1.0, 5.0)
        series2.add(2.0, 7.0)
        series2.add(3.0, 6.0)
        series2.add(4.0, 8.0)
        series2.add(5.0, 4.0)
        series2.add(6.0, 4.0)
        series2.add(7.0, 2.0)
        series2.add(8.0, 1.0)

     series3 = XYSeries.new("Third")
        series3.add(3.0, 4.0)
        series3.add(4.0, 3.0)
        series3.add(5.0, 2.0)
        series3.add(6.0, 3.0)
        series3.add(7.0, 6.0)
        series3.add(8.0, 3.0)
        series3.add(9.0, 4.0)
        series3.add(10.0, 3.0)

     dataset = XYSeriesCollection.new
        dataset.addSeries(series1)
        dataset.addSeries(series2)
        dataset.addSeries(series3)

        return dataset
  end

  def createChart(dataset)
    # create the chart...
        chart = Java::ChartFactory.createXYLineChart(
            "Line Chart Demo 6",      # chart title
            "X",                      # x axis label
            "Y",                      # y axis label
            dataset,                  # data
            PlotOrientation.VERTICAL,
            true,                     # include legend
            true,                     # tooltips
            false)                   # urls

    # NOW DO SOME OPTIONAL CUSTOMISATION OF THE CHART...
        chart.setBackgroundPaint(Color.white);

    # get a reference to the plot for further customisation...
        plot = XYPlot.chart.getXYPlot();
        plot.setBackgroundPaint(Color.lightGray);
        plot.setDomainGridlinePaint(Color.white);
        plot.setRangeGridlinePaint(Color.white);

    renderer = XYLineAndShapeRenderer.new();
        renderer.setSeriesLinesVisible(0, false);
        renderer.setSeriesShapesVisible(1, false);
        plot.setRenderer(renderer);

    # change the auto tick unit selection to integer units only...
        rangeAxis = plot.getRangeAxis();
        rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());

    # OPTIONAL CUSTOMISATION COMPLETED.

        return chart;
  end

end

demo = LineChartDemo6.new("Line Chart Demo 6")