这引用了烛台图表的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;}
答案 0 :(得分:0)
尝试将JFreeChart的setAntiAlias设置为false。
JFreeChart chart = ChartFactory.createCandlestickChart(...);
chart.setAntiAlias(false);