Bug in XYDifferenceRenderer with inversed domain values

A discussion forum for JFreeChart (a 2D chart library for the Java platform).
Locked
tomkieffer
Posts: 24
Joined: Wed May 16, 2007 8:20 am

Bug in XYDifferenceRenderer with inversed domain values

Post by tomkieffer » Wed Jan 09, 2008 11:13 am

Hi,
I created the following demo to demonstrate what I think is a bug in XYDifferenceRenderer.

Every thing is ok, if at line 35 the code "inverse(time)" is inactive. If however, as in the demo, I inverse the x-axis values (before creating the dataset), the Renderer draws only lines.

P.S. I added the method "inverse" to org.jfree.util.ArrayUtilities. Perhaps you might want to add it, too.

Code: Select all

package bugfinder;

import java.awt.BorderLayout;
import java.awt.Color;
import java.util.Arrays;
import javax.swing.JFrame;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.CombinedDomainXYPlot;
import org.jfree.chart.plot.CombinedRangeXYPlot;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYDifferenceRenderer;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.chart.title.LegendTitle;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.xy.DefaultXYDataset;
import org.jfree.util.ArrayUtilities;

/**
 *
 * @author Kieffer
 */
public class DifferenceRendererTest extends JFrame{
    
    /** Creates a new instance of Main */
    public DifferenceRendererTest() {
        
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        double[] time = new double[] {0, 1, 2, 3, 4, 5, 6, 7, 8};
        double[][] data = new double [][] {{0, 1, 2, 3, 4, 5, 6, 7, 8}, {0, 1, 2, 3, 7, 8, 6, 7, 8}};
        
        //Here is the point!        
        inverse(time);
        
        DefaultXYDataset dataset = new DefaultXYDataset();
        dataset.addSeries("s1", new double[][] {time, data[0]});
        dataset.addSeries("s2", new double[][] {time, data[1]});
        
        NumberAxis xAxis = new NumberAxis();
        NumberAxis yAxis = new NumberAxis("yAxis");
        XYPlot plot = new XYPlot(dataset, xAxis, yAxis, new XYDifferenceRenderer(Color.GREEN, Color.RED, false));
        
        JFreeChart chart = new JFreeChart("DifferenceRenderer test", plot);
        chart.setBackgroundPaint(Color.WHITE);
        LegendTitle legend = chart.getLegend();
        legend.setBorder(0.0, 0.0, 0.0, 0.0);
        ChartPanel cp = new ChartPanel(chart);
        
        this.setLayout(new BorderLayout());
        ((BorderLayout)(this.getLayout())).setVgap(20);
        this.setBackground(Color.WHITE);
        this.add(cp, BorderLayout.CENTER);   
    }
    
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        DifferenceRendererTest m = new DifferenceRendererTest();
        m.setVisible(true);
        m.pack();
    }
    
    public static void inverse(double[] a) {
    
        double half = a.length/2;
        for ( int i = 0; i < half; i++) {
            double swap = a[i];
            a[i] = a[a.length-1-i];
            a[a.length-1-i] = swap;
        }
    
    }
}

david.gilbert
JFreeChart Project Leader
Posts: 11734
Joined: Fri Mar 14, 2003 10:29 am
antibot: No, of course not.
Contact:

Post by david.gilbert » Wed Jan 09, 2008 11:45 am

Thanks for the report. I've added this to the bug database:

https://sourceforge.net/tracker/index.p ... tid=115494
David Gilbert
JFreeChart Project Leader

:idea: Read my blog
:idea: Support JFree via the Github sponsorship program

RichardWest
Posts: 844
Joined: Fri Oct 13, 2006 9:29 pm
Location: Sunnyvale, CA

Post by RichardWest » Wed Jan 09, 2008 8:23 pm

david.gilbert wrote:Thanks for the report. I've added this to the bug database:

https://sourceforge.net/tracker/index.p ... tid=115494
I will take a look at this since I rewrote much of the rendering code.
Richard West
Design Engineer II
Advanced Micro Devices
Sunnyvale, CA

david.gilbert
JFreeChart Project Leader
Posts: 11734
Joined: Fri Mar 14, 2003 10:29 am
antibot: No, of course not.
Contact:

Post by david.gilbert » Thu Jan 10, 2008 12:31 pm

Thanks, Richard!
David Gilbert
JFreeChart Project Leader

:idea: Read my blog
:idea: Support JFree via the Github sponsorship program

Locked