JFreeChart 相对缩放
JFreeChart relative scaling
我想用 JFreechart 创建线图。我的数据是这样的:
Number1,Number2,Timestamp
所以我想要两条线,其中 Y 轴是 Number1 和 Number2,X 轴是时间戳。
我将图表保存为 png 图像,X 轴看起来很长,我认为这是因为时间戳相隔很长时间。
我搜索了 google 和 Whosebug,但像 this 这样的答案对我不起作用。我怎样才能解决这个问题?
这是我的代码:
TimeSeries ts = new TimeSeries("Systole");
ts.add(new Minute(new Date(1356999660000L)), 141);
ts.add(new Minute(new Date(1356999840000L)), 129);
ts.add(new Minute(new Date(1433074800000L)), 146);
ts.add(new Minute(new Date(1433075700000L)), 136);
TimeSeries diast = new TimeSeries("Diastole");
diast.add(new Minute(new Date(1356999660000L)), 95);
diast.add(new Minute(new Date(1356999840000L)), 86);
diast.add(new Minute(new Date(1433074800000L)), 98);
diast.add(new Minute(new Date(1433075700000L)), 91);
final XYSeriesCollection dataset = new XYSeriesCollection();
dataset.addSeries(systole);
dataset.addSeries(diastole);
XYDataset data = dataset;
final TimeSeriesCollection dataset = new TimeSeriesCollection();
dataset.addSeries(ts);
dataset.addSeries(diast);
XYDataset data = dataset;
//String title, String timeAxisLabel, String valueAxisLabel, XYDataset dataset
JFreeChart chart = ChartFactory.createTimeSeriesChart("Blutdruck", "", "", data);
SaveImage(chart.createBufferedImage(500,500),"Test1.png");
"vertical lines" 效应的发生是因为您正在绘制一个在非常不同的尺度(分钟与年)上波动的序列。显然,在绘制两年期间的图表时,一分钟的变化是完全看不到的。这就像试图在一个国家的地图上画出一个城市的街道。
这个问题没有现成的解决方案,但您可以从典型的股价图(来自 Google 或雅虎)中找到灵感,他们让用户选择比例他们想用。
五天的变化:
三个月变化:
请注意,三个月的变化比五天的变化平滑。原因是他们不会尝试在每一分钟绘制值。相反,他们 "subsample" 他们的数据。
换句话说,他们取一天的平均值并仅绘制每一天的值。
我想用 JFreechart 创建线图。我的数据是这样的:
Number1,Number2,Timestamp
所以我想要两条线,其中 Y 轴是 Number1 和 Number2,X 轴是时间戳。 我将图表保存为 png 图像,X 轴看起来很长,我认为这是因为时间戳相隔很长时间。 我搜索了 google 和 Whosebug,但像 this 这样的答案对我不起作用。我怎样才能解决这个问题?
这是我的代码:
TimeSeries ts = new TimeSeries("Systole");
ts.add(new Minute(new Date(1356999660000L)), 141);
ts.add(new Minute(new Date(1356999840000L)), 129);
ts.add(new Minute(new Date(1433074800000L)), 146);
ts.add(new Minute(new Date(1433075700000L)), 136);
TimeSeries diast = new TimeSeries("Diastole");
diast.add(new Minute(new Date(1356999660000L)), 95);
diast.add(new Minute(new Date(1356999840000L)), 86);
diast.add(new Minute(new Date(1433074800000L)), 98);
diast.add(new Minute(new Date(1433075700000L)), 91);
final XYSeriesCollection dataset = new XYSeriesCollection();
dataset.addSeries(systole);
dataset.addSeries(diastole);
XYDataset data = dataset;
final TimeSeriesCollection dataset = new TimeSeriesCollection();
dataset.addSeries(ts);
dataset.addSeries(diast);
XYDataset data = dataset;
//String title, String timeAxisLabel, String valueAxisLabel, XYDataset dataset
JFreeChart chart = ChartFactory.createTimeSeriesChart("Blutdruck", "", "", data);
SaveImage(chart.createBufferedImage(500,500),"Test1.png");
"vertical lines" 效应的发生是因为您正在绘制一个在非常不同的尺度(分钟与年)上波动的序列。显然,在绘制两年期间的图表时,一分钟的变化是完全看不到的。这就像试图在一个国家的地图上画出一个城市的街道。
这个问题没有现成的解决方案,但您可以从典型的股价图(来自 Google 或雅虎)中找到灵感,他们让用户选择比例他们想用。
五天的变化:
三个月变化:
请注意,三个月的变化比五天的变化平滑。原因是他们不会尝试在每一分钟绘制值。相反,他们 "subsample" 他们的数据。
换句话说,他们取一天的平均值并仅绘制每一天的值。