0
這是我遇到的一個拐角案例。以下是SSCCE:帶有單個數據點的XYDataset:沒有任何繪圖
import java.util.*;
import java.io.*;
import java.awt.Color;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
import org.jfree.chart.*;
import org.jfree.chart.plot.*;
import org.jfree.chart.axis.*;
import org.jfree.data.time.*;
import org.jfree.data.xy.XYDataset;
public class FooMain {
public static void main(String args[]) throws Exception {
BufferedImage img = timeAxisSSEProcessionsChart();
ImageIO.write(img, "png", new File("img.png"));
System.exit(0);
}
private static XYDataset createTimeSeriesDataset() {
TimeSeries timeSeries = new TimeSeries("series-a");
timeSeries.add(RegularTimePeriod.createInstance(Millisecond.class, new java.util.Date(0) , TimeZone.getTimeZone("Zulu")), 100);
// if below line is commented out, nothing is plotted:
timeSeries.add(RegularTimePeriod.createInstance(Millisecond.class, new java.util.Date(1000), TimeZone.getTimeZone("Zulu")), 100);
TimeSeriesCollection rv = new TimeSeriesCollection();
rv.addSeries(timeSeries);
return rv;
}
public static BufferedImage timeAxisSSEProcessionsChart() throws Exception {
XYDataset dataset = createTimeSeriesDataset();
JFreeChart chart = ChartFactory.createTimeSeriesChart("title", "date", "series-a", dataset, true, true, false);
InputStream in = new ByteArrayInputStream(imageBytesFromChart(chart, 600, 400));
return ImageIO.read(in);
}
private static byte[] imageBytesFromChart(JFreeChart chart, int width, int height) {
BufferedImage objBufferedImage = chart.createBufferedImage(width, height);
ByteArrayOutputStream bas = new ByteArrayOutputStream();
try {
ImageIO.write(objBufferedImage, "png", bas);
} catch (IOException e) {
e.printStackTrace();
}
byte[] byteArray=bas.toByteArray();
return byteArray;
}
}
上面的代碼會按預期生成一個圖。
如果但是我們註釋掉createTimeSeriesDataset方法的指示線,再沒有什麼被畫在:
所以,問題是:我怎麼能保證至少一個點(或其他一些標記)被打印在角落的情況下XYDataset
只包含一個數據點?
(沒有測試它,只是一個簡單的問題:當您添加*同*點,會發生什麼*兩次*) – Marco13 2014-08-31 15:19:17
@ Marco13 org.jfree.data.general.SeriesException:您正在嘗試在1970年1月1日01:00:00添加對時間段的觀察,但該系列已包含該時間段的觀察值。重複是不允許的。嘗試使用addOrUpdate()方法。 – 2014-08-31 15:22:39