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