我遇到了JFreeChart覆蓋圖的問題。我使用JFreeChart 1.0.13。我想要做的事情似乎是在JFreeChart的早期版本中做起來更容易?JFreeChart覆蓋圖的幫助
該圖顯示了折線圖和條形圖。 Y軸的折線圖繪製的數據範圍在0-100範圍內,並且條形圖的軸位於0-5範圍內。
單獨地,當我佈置每個圖表並繪製它們時,它們看起來很棒。這裏有一個例子:
柱狀圖 線圖
但是,當我覆蓋他們,條形圖被縮小到看起來非常沒用......大概是因爲兩個數據集的規模是如此不同。
實施例:
我真正想要的是分裂系列數據的兩個數據集,並且顯示0-100範圍爲左側Y軸的線圖和具有條形圖顯示完整大小,如下面我的第一個示例所示,但在圖的右側Y軸側顯示刻度0-5。
要創建圖形,我使用的是XYSeriesCollection首先創建條形圖,添加數據和創建情節......
XYSeriesCollection histogramDataset= new XYSeriesCollection();
XYSeries xy= new XYSeries("Temp");
xy.add(100,0.0);
xy.add(101,0.3769791404875597);
histogramDataset.addSeries(xy);
...
final NumberAxis xAxis = new NumberAxis("Temperature C");
xAxis.setAutoRangeIncludesZero(false);
final ValueAxis yAxis = new NumberAxis("Percent Time above Temperature");
final XYItemRenderer renderer = new XYBarRenderer();
final XYPlot plot = new XYPlot((XYDataset) histogramDataset, xAxis, yAxis, renderer);
然後,我以同樣的方式創建折線圖,並添加第二個系列的情節...
final XYSeries xy = new XYSeries("First");
final XYDataset xySeriesData = new XYSeriesCollection();
final XYItemRenderer xyLineRenderer = new XYLineAndShapeRenderer();
xyLineRenderer.setSeriesShape(0, new Line2D.Double(0.0, 0.0, 0.0, 0.0));
xyLineRenderer.setSeriesStroke(0, new BasicStroke(4.5f));
xy.add(100,100.0);
xy.add(101,100.0);
xyseriesData.add(xy);
plot.setDataset(1, xySeriesData);
plot.setRenderer(1, xyLineRenderer);
plot.setDatasetRenderingOrder(DatasetRenderingOrder.FORWARD);
我懷疑是不知何故每個圖需要是它自己的情節,並結合在一起。誰能幫忙?我在這裏想要的是這樣的:
除了我不希望條形圖是背景圖像。 X軸應該是相同的,並且Y軸應該在正確的比例尺的右側,從而允許圖形被顯示爲全尺寸。
任何/所有答覆都讚賞...
與http://www.jfree.org/jfreechart/無關;只是一個滿意的客戶和某個貢獻者。 – trashgod 2010-09-14 01:08:12
感謝您的正確方向。添加: final ValueAxis yAxis = new NumberAxis(「溫度百分比時間」); \t \t plot.setRangeAxis(1,yAxis); plot.mapDatasetToRangeAxis(0,1); MapDataSetToRange是關鍵... – Griff 2010-09-14 14:12:49