I am trying to create one chart in JFreeChart, which consists of an overlaid candlestick chart and a Timeseries chart. (a bit like this)

(source: Prices-oil.org )
I tried to create a Candlestick chart and then add an additional XY series and visualize it, but this leads to a runtime error org.jfree.data.xy.XYSeriesCollection cannot be cast to org.jfree.data.xy.OHLCDataset
A snippet of my code is as follows
private XYPlot plot; private XYSeriesCollection dataTrend; private XYItemRenderer renderer; public OhlcChart(BarCollection bars) { JFreeChart jfreechart = ChartFactory.createCandlestickChart("FX Trader Prototype", "Time", "Value", getDataset(bars), true); plot = (XYPlot)jfreechart.getPlot(); plot.setDomainPannable(true); NumberAxis numberAxis = (NumberAxis)plot.getRangeAxis(); numberAxis.setAutoRangeIncludesZero(false); numberAxis.setAutoRangeStickyZero(false); numberAxis.setUpperMargin(0.0D); numberAxis.setLowerMargin(0.0D); DateAxis dateAxis = (DateAxis) plot.getDomainAxis(); SimpleDateFormat formatter = new SimpleDateFormat("dd MMM HH:mm.ss"); dateAxis.setDateFormatOverride(formatter); this.renderer = plot.getRenderer(); Stroke myStroke = new BasicStroke((float) 1.0); this.renderer = new XYLineAndShapeRenderer(); this.renderer.setSeriesPaint(0, Color.blue); this.renderer.setSeriesStroke(0, myStroke); } public OhlcChart update(Timeseries<Double> ts) { Stroke myStroke = new BasicStroke((float) 1.0); XYLineAndShapeRenderer timeSeriesRenderer = new XYLineAndShapeRenderer(); timeSeriesRenderer.setBaseShapesVisible(false); timeSeriesRenderer.setSeriesPaint(0, Color.blue); timeSeriesRenderer.setSeriesStroke(0, myStroke); UiTimeseries series = new UiTimeseries(ts); dataTrend.addSeries(series); plot.setDataset(plot.getDatasetCount()+1, dataTrend); plot.setRenderer(plot.getDatasetCount()+1, timeSeriesRenderer); return this; }
Any advice would be greatly appreciated.
source share