0
我有一个JFreeChart
TimeSeriesChart其中一些值可能包含空值,因为它们只存在,如果他们改变超过某个阈值。JFreeChart内插值
有没有办法来告诉它忽略它们是空值,并连接(插值)之间?
的代码是在这里:
final TimeSeries tseries = new TimeSeries("Temperature");
final TimeSeries hseries = new TimeSeries("Humidity");
final TimeSeries pseries = new TimeSeries("Pressure");
for (final Map<String, Object> value : list) {
final Date datetime = (Date) value.get("datetime");
final BigDecimal temperature = (BigDecimal) value.get("temperature");
final BigDecimal humidity = (BigDecimal) value.get("humidity");
final BigDecimal pressure = (BigDecimal) value.get("pressure");
tseries.add(new Millisecond(datetime), temperature);
hseries.add(new Millisecond(datetime), humidity);
pseries.add(new Millisecond(datetime), pressure);
}
final JFreeChart timeChart = ChartFactory.createTimeSeriesChart(sensor.getName(), null, null, null, false, false, false);
timeChart.getXYPlot().setRangeAxis(new NumberAxis("Temperature (°C)"));
timeChart.getXYPlot().getRangeAxis().setRange(-10, 30);
((NumberAxis) timeChart.getXYPlot().getRangeAxis()).setTickUnit(new NumberTickUnit(5));
timeChart.getXYPlot().setDataset(0, new TimeSeriesCollection(tseries));
timeChart.getXYPlot().setDataset(1, new TimeSeriesCollection(hseries));
timeChart.getXYPlot().setDataset(2, new TimeSeriesCollection(pseries));
timeChart.getXYPlot().setRenderer(0, new StandardXYItemRenderer());
timeChart.getXYPlot().setRenderer(1, new StandardXYItemRenderer());
timeChart.getXYPlot().setRenderer(2, new StandardXYItemRenderer());
final NumberAxis humAxis = new NumberAxis("Humidity (%)");
humAxis.setRange(20, 80);
humAxis.setTickUnit(new NumberTickUnit(5));
timeChart.getXYPlot().setRangeAxis(1, humAxis);
timeChart.getXYPlot().mapDatasetToRangeAxis(1, 1);
final NumberAxis pressAxis = new NumberAxis("Pressure (hPa)");
pressAxis.setRange(970, 1020);
pressAxis.setTickUnit(new NumberTickUnit(10));
timeChart.getXYPlot().setRangeAxis(2, pressAxis);
timeChart.getXYPlot().mapDatasetToRangeAxis(2, 2);
final DateAxis axis = (DateAxis) timeChart.getXYPlot().getDomainAxis();
scheduledReportService.setChartScale(scheduledReport, axis);
ChartUtilities.writeChartAsPNG(baos, timeChart, Chart.WIDTH, Chart.HEIGHT);
不幸的是,这并不工作,这都没有区别。即使将setDrawSeriesLineAsPath()设置为true或false也不会改变。 – yglodt
请编辑您的问题,以包含具有代表性数据的[mcve],以展示您描述的问题。你能从源头得到缺失的数据吗?如果不是这样,你可能需要在添加()'值时恢复它们。 – trashgod