JFreeChart在烛台图表中弄脏线条

时间:2014-10-25 07:22:54

标签: java swing jfreechart

这引用了烛台图表的JFreeChart渲染。下面是使用JFreeChart生成烛台图表的代码片段。

此代码已经过测试,并且已经使用了很长时间。但是,JFreeChart的版本从1.0.17更改为1.0.19,使用1.0.19生成的烛台图表显示蜡烛对象/线条的污迹。当我将库更改回1.0.17时,烛台对象/行再次变得清晰。

下面提供了两个库的图像。

我试图找到原因并且尚未成功。现在,问题是,因为代码已经过测试,并且可能没有任何错误(至少我可以想到或者我错过了什么?),这是库的问题吗?有没有人遇到过这个问题并且有解决方法

如果有人找到了原因/解决方案并分享了相同的内容,我将非常感激。

请使用MS Paint查看图像。

try{

        chart=ChartFactory.createCandlestickChart("Candlestick Chart", "Date", "EOD Closing Price", (OHLCDataset)dataset, true);

        plot=(XYPlot)chart.getPlot();
        CandlestickRenderer renderer=new Chart_CandlestickRenderer();//(CandlestickRenderer)plot.getRenderer();
        renderer.setSeriesPaint(0, Color.BLACK);
        renderer.setUpPaint(Color.WHITE);
        renderer.setDownPaint(Color.BLACK);

        //HighLowItemLabelGenerator candleTooltipGenerator=new HighLowItemLabelGenerator(new SimpleDateFormat("dd-MMM-yyyy"), new DecimalFormat());
        XYToolTipGenerator candleTooltipGenerator=Chart_TooltipProvider.getOHLCTooltipGenerator();
        renderer.setBaseToolTipGenerator(candleTooltipGenerator);
        plot.setRenderer(0,renderer);

        //Organize the data to draw Fibbonacci retracements with highs and lows
        DefaultOHLCDataset ohlcDataset=(DefaultOHLCDataset)dataset;
        int dataCount=ohlcDataset.getItemCount(0);
        data=new double[dataCount*2];//for each data item we shall get 2 values, high and low
        for(int i=0;i<dataCount;i++){

            //for each i 2 data values need to be put into the array and adjust the index accordingly
            data[i*2]=ohlcDataset.getHighValue(0, i);
            data[i*2+1]=ohlcDataset.getLowValue(0, i);

        }//for closing

        //If there is only the candlestick to be drawn, return, as the job has been done, draw the Fibonnaci and return
        if(indicators.length==1){

            this.drawFibonnaciRetracement(data, plot);
            retVal=true;
            return retVal;

        }//if closing 

    }catch(Exception e){e.printStackTrace();return retVal;}

JFreeChart 1.0.17

JFreeChart 1.0.19

1 个答案:

答案 0 :(得分:0)

尝试将JFreeChart的setAntiAlias设置为false。

JFreeChart chart = ChartFactory.createCandlestickChart(...); chart.setAntiAlias(false);