Jfreechart拆线图 ,考试排名次,y轴的值是由0往高的;比如,升学考试第9名,期中考试第5名,实际图表显示的趋势图向下,有没有办法实现趋势图向上,即:y轴的值是由高往0

解决方案 »

  1.   

    得到NumberAxis对象,然后使用setInverted(true)方法。示例代码如下:
    /* -------------------
     * LineChartDemo1.java
     * -------------------
     * (C) Copyright 2002-2005, by Object Refinery Limited.
     *
     */package demo;import java.awt.Color;
    import java.awt.Dimension;
    import javax.swing.JPanel;import org.jfree.chart.ChartFactory;
    import org.jfree.chart.ChartPanel;
    import org.jfree.chart.JFreeChart;
    import org.jfree.chart.axis.NumberAxis;
    import org.jfree.chart.plot.CategoryPlot;
    import org.jfree.chart.plot.PlotOrientation;
    import org.jfree.chart.renderer.category.LineAndShapeRenderer;
    import org.jfree.data.category.CategoryDataset;
    import org.jfree.data.category.DefaultCategoryDataset;
    import org.jfree.ui.ApplicationFrame;
    import org.jfree.ui.RefineryUtilities;/**
     * A simple demonstration application showing how to create a line chart using 
     * data from a {@link CategoryDataset}.
     */
    public class LineChartDemo1 extends ApplicationFrame {    /**
         * Creates a new demo.
         *
         * @param title  the frame title.
         */
        public LineChartDemo1(String title) {
            super(title);
            JPanel chartPanel = createDemoPanel();
            chartPanel.setPreferredSize(new Dimension(500, 270));
            setContentPane(chartPanel);
        }    /**
         * Creates a sample dataset.
         * 
         * @return The dataset.
         */
        private static CategoryDataset createDataset() {
            DefaultCategoryDataset dataset = new DefaultCategoryDataset();
            dataset.addValue(212, "Classes", "JDK 1.0");
            dataset.addValue(504, "Classes", "JDK 1.1");
            dataset.addValue(1520, "Classes", "SDK 1.2");
            dataset.addValue(1842, "Classes", "SDK 1.3");
            dataset.addValue(2991, "Classes", "SDK 1.4");
            return dataset;
        }
        
        /**
         * Creates a sample chart.
         * 
         * @param dataset  a dataset.
         * 
         * @return The chart.
         */
        private static JFreeChart createChart(CategoryDataset dataset) {
            
            // create the chart...
            JFreeChart chart = ChartFactory.createLineChart(
                "Java Standard Class Library",   // chart title
                "Release",                       // domain axis label
                "Class Count",                   // range axis label
                dataset,                         // data
                PlotOrientation.VERTICAL,        // orientation
                false,                           // include legend
                true,                            // tooltips
                false                            // urls
            );
            CategoryPlot plot = (CategoryPlot) chart.getPlot();        // customise the range axis...
            NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
            rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
            //坐标轴上值的反转!!!!
            rangeAxis.setInverted(true);
            
                    // customise the renderer...
            LineAndShapeRenderer renderer 
                = (LineAndShapeRenderer) plot.getRenderer();
            renderer.setShapesVisible(true);
            renderer.setDrawOutlines(true);
            renderer.setUseFillPaint(true);
            renderer.setFillPaint(Color.white);        return chart;
        }
        
        /**
         * Creates a panel for the demo (used by SuperDemo.java).
         * 
         * @return A panel.
         */
        public static JPanel createDemoPanel() {
            JFreeChart chart = createChart(createDataset());
            return new ChartPanel(chart);
        }
        
        /**
         * Starting point for the demonstration application.
         *
         * @param args  ignored.
         */
        public static void main(String[] args) {
            LineChartDemo1 demo = new LineChartDemo1("Line Chart Demo");
            demo.pack();
            RefineryUtilities.centerFrameOnScreen(demo);
            demo.setVisible(true);
        }}
      

  2.   

    // 通过查询数据库中的数据来设置chart        xymodel.addValue("2001", new Integer(20), new Integer(120));
            xymodel.addValue("2001", new Integer(40), new Integer(135));
            xymodel.addValue("2001", new Integer(60), new Integer(140));
            xymodel.addValue("2001", new Integer(80), new Integer(160));        xymodel.addValue("2002", new Integer(80), new Integer(120));
            xymodel.addValue("2002", new Integer(60), new Integer(135));
            xymodel.addValue("2002", new Integer(40), new Integer(140));
            xymodel.addValue("2002", new Integer(10), new Integer(160));        xymodel.addValue("2003", new Integer(30), new Integer(120));
            xymodel.addValue("2003", new Integer(15), new Integer(135));
            xymodel.addValue("2003", new Integer(20), new Integer(140));
            xymodel.addValue("2003", new Integer(90), new Integer(130));        chart.setModel(xymodel);
            // 要设置类型为线形
            chart.setWidth("350px");
            chart.setHeight("200px");
            chart.setType("time_series");
            chart.setThreeD(false);
            chart.setTitle("line Chart");
        }这个是用ZK来写的,