【问题标题】:JFreeChart Smudging of lines in Candlestick ChartJFreeChart 烛台图中线条的污点
【发布时间】:2014-10-25 07:22:54
【问题描述】:

这参考了烛台图的 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;}

【问题讨论】:

  • 如果您可以只发布没有桌面背景的框架,那就更好了
  • CandlestickRenderer history 相当稳定。
  • 不确定这是否会有所帮助,但请尝试一下,以防某些绘图分辨率默认值在版本之间发生更改。您可以尝试将图表包装在 ChartPanel 中并设置最大分辨率,然后再像这样缩放:chartPanel = new ChartPanel(chart); chartPanel.setMaximumDrawHeight(2400); chartPanel.setMaximumDrawWidth(3600);
  • @xpa1492,试过了,没有影响,线条还是有污迹。 1.0.19 中是否更改了一些 2D 渲染机制...?

标签: java swing jfreechart


【解决方案1】:

尝试将 JFreeChart 的 setAntiAlias 设置为 false。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-14
    • 2021-09-06
    • 2023-04-04
    • 2013-12-06
    • 2017-09-04
    • 2022-10-02
    相关资源
    最近更新 更多