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" 他们的数据。

换句话说,他们取一天的平均值并仅绘制每一天的值。