如下图所示:我想用jfreechart做一个折线图横坐标的标度是6的倍数,但折点的横坐标并不是6的倍数,而是无规律的。用jfreechart怎么实现啊?

解决方案 »

  1.   

    是啊,我也想问这个问题,好像jfreechart给你自动控制了,我要手动控制怎么做?
      

  2.   

    jfreechart只不过是画图而已。
    你手动的话:
    是改变数据吗?
    还是改变显示方式。
    还是。
    肯定可以实现咯,提供不同的入口或者参数啊
      

  3.   

    写一个数据填充类,通过sql调用数据库取到各个坐标的值,分别填充入横坐标和纵坐标,然后生成JPG,就OK啦
      

  4.   


    我也是这么做的
    将横纵坐标值填进去图自然就出来了啊
    有sql的
    还有javabean的
    网上实例也多,挺方便的
      

  5.   

    好像不太好弄.因为纵坐标才是你想要的值,横坐标,应该是一个固定 的,比如:
            String str1="北京";
            String str2="上海";
            String str3="深圳";        String str4="葡萄";
            String str5="苹果";
            String str6="香蕉";
            String str7="梨";
            String str8="桃子";        DefaultCategoryDataset dcd=new DefaultCategoryDataset();
            dcd.addValue(1.0D,str1,str4);
            dcd.addValue(4.0D,str1,str5);
            dcd.addValue(3.0D,str1,str6);
            dcd.addValue(5.0D,str1,str7);
            dcd.addValue(5.0D,str1,str8);
            dcd.addValue(5.0D,str2,str4);
            dcd.addValue(7.0D,str2,str5);
            dcd.addValue(6.0D,str2,str6);
            dcd.addValue(8.0D,str2,str7);
            dcd.addValue(4.0D,str2,str8);
            dcd.addValue(4.0D,str3,str4);
            dcd.addValue(3.0D,str3,str5);
            dcd.addValue(2.0D,str3,str6);
            dcd.addValue(3.0D,str3,str7);
            dcd.addValue(6.0D,str3,str8);
    如果是你要的,那葡萄和苹果中间算什么?
    月分中间可有得算,
    用这个DATA应该实现不了的.你可以试试其它的
    DATABASE,试试,如果找到了再回复
      

  6.   

    XYDataset 要用这个,你搜索下.
    给个例子,如果可以自己改吧.没有文档的东西只有看源码.实现这些奇怪的图一般都要自己设置横纵坐标,然后画一张图覆盖上去的.
    public static JFreeChart createChart(){
            XYDataset localXYDataset1=createDataset("Series 1",100.0D,new Minute(),200);
            JFreeChart chart=ChartFactory.createTimeSeriesChart(
                    "Multiple Axis Demo 1","Time of Day","Primary Range Axis",localXYDataset1,
                    true,true,false);
            chart.addSubtitle(new TextTitle("Four datasets and four range axes."));
            
            XYPlot localXYPlot=(XYPlot)chart.getPlot();
            localXYPlot.setOrientation(PlotOrientation.VERTICAL);
            localXYPlot.setDomainPannable(true);
            localXYPlot.setRangePannable(true);
            localXYPlot.getRangeAxis().setFixedDimension(15.0D);
            
            NumberAxis localNumberAxis1=new NumberAxis("Range Axis 2");
            localNumberAxis1.setFixedDimension(10.0D);
            localNumberAxis1.setAutoRangeIncludesZero(false);
            localXYPlot.setRangeAxis(1,localNumberAxis1);
            
            localXYPlot.setRangeAxisLocation(1,AxisLocation.BOTTOM_OR_LEFT);
            XYDataset localXYDataset2=createDataset("Series 2",1000.0D,new Minute(),170);
            localXYPlot.setDataset(1,localXYDataset2);
            localXYPlot.mapDatasetToRangeAxis(1,1);
            StandardXYItemRenderer localStandardXYItemRenderer1=new StandardXYItemRenderer();
            localXYPlot.setRenderer(1,localStandardXYItemRenderer1);
            NumberAxis localNumberAxis2=new NumberAxis("Range Axis 3");
            localXYPlot.setRangeAxis(2,localNumberAxis2);        /*XYDataset localXYDataset3=createDataset("Series 3",10000.0D,new Minute(),170);
            localXYPlot.setDataset(2,localXYDataset3);*/
            localXYPlot.mapDatasetToRangeAxis(2,2);
            StandardXYItemRenderer localStandardXYItemRenderer2=new StandardXYItemRenderer();
            localXYPlot.setRenderer(2,localStandardXYItemRenderer2);
            /*NumberAxis localNumberAxis3=new NumberAxis("Range Axis 4");
            localXYPlot.setRangeAxis(3,localNumberAxis3);*/        /*XYDataset localXYDataset4=createDataset("Series 4",25.0D,new Minute(),200);
            localXYPlot.setDataset(3,localXYDataset4);*/
            
            localXYPlot.mapDatasetToRangeAxis(3,3);
            StandardXYItemRenderer localStandardXYItemRenderer3=new StandardXYItemRenderer();
            localXYPlot.setRenderer(3,localStandardXYItemRenderer3);
            ChartUtilities.applyCurrentTheme(chart);
            localXYPlot.getRenderer().setSeriesPaint(0,Color.black);
            localStandardXYItemRenderer1.setSeriesPaint(0,Color.red);
            localNumberAxis1.setLabelPaint(Color.red);
            localNumberAxis1.setTickLabelPaint(Color.red);
            
            localStandardXYItemRenderer2.setSeriesPaint(0,Color.blue);
            localNumberAxis2.setLabelPaint(Color.blue);
            localNumberAxis2.setTickLabelPaint(Color.blue);
            localStandardXYItemRenderer3.setSeriesPaint(0,Color.green);
            /*localNumberAxis3.setLabelPaint(Color.green);
            localNumberAxis3.setTickLabelPaint(Color.green);*/
            return chart;
        }    public static XYDataset createDataset(String paramString,double paramDouble,
                RegularTimePeriod paramRegularTimePeriod,int paramInt){
            TimeSeries localTimeSeries=new TimeSeries(paramString);
            RegularTimePeriod localRegularTimePeriod=paramRegularTimePeriod;        double d=paramDouble;
            for(int i=0;i<paramInt;++i){
                localTimeSeries.add(localRegularTimePeriod,d);
                localRegularTimePeriod=localRegularTimePeriod.next();
                d*=(1.0D+(Math.random()-0.495D)/10.0D);
            }        TimeSeriesCollection localTimeSeriesCollection=new TimeSeriesCollection();
            localTimeSeriesCollection.addSeries(localTimeSeries);
            return localTimeSeriesCollection;
        }    public static void saveCharToJPG(JFreeChart chart,String fileName) throws IOException{
            OutputStream fos=null;
            try{
                fos=new BufferedOutputStream(new FileOutputStream(fileName));
                ChartUtilities.writeChartAsJPEG(fos,1.0f,chart,1024,768,null);
            }catch(Exception e){
            }finally{
                fos.close();
            }
        }    public static void main(String[] args) throws IOException{
            saveCharToJPG(createChart(),"D:\\multipleaxis.jpg");
        }