Pastie now auto-senses if line-wrap is a bad or good idea. Feedback?
## mark a section (Learn more)
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")
This paste will be private.
From the Design Piracy series on my blog: