gpt4 book ai didi

java - JFreeChart 相对缩放

转载 作者:行者123 更新时间:2023-11-30 03:16:01 26 4
gpt4 key购买 nike

我想用 JFreechart 创建折线图。我的数据如下:

Number1,Number2,Timestamp

所以我想要两条线,其中 Y 轴是 Number1 和 Number2,X 轴是时间戳。我将图表保存为 png 图像,X 轴看起来太长,我认为这是因为时间戳相距很远。我搜索了 google 和 Stackoverflow 但答案如 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");

enter image description here

最佳答案

之所以会出现“垂直线”效应,是因为您正在绘制一个在不同尺度(分钟与年)上波动的序列。显然,在绘制两年期间的变化时,一分钟尺度的变化是完全看不见的。这就像试图在一个国家的 map 上绘制一个城市的街道。

这个问题没有开箱即用的解决方案,但您可以从典型的股价图(来自 Google 或 Yahoo)中找到灵感,它们让用户选择他们想要使用的比例。

五天内的变化: enter image description here

三个月内的变化: enter image description here

请注意,三个月内的变化比五天内的变化平滑。原因是他们不会尝试绘制每分钟的值。相反,他们对数据进行“二次采样”。

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

关于java - JFreeChart 相对缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32561124/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com