gpt4 book ai didi

java - 为什么时间序列集合图表中的数据显示不正确?

转载 作者:太空宇宙 更新时间:2023-11-04 06:38:28 26 4
gpt4 key购买 nike

我制作了一个图表timeseries集合类型。我正在将以下值提取到数据库中。

但是,在创建图表时,显示的值并不完全准确。有人能告诉我为什么会发生这种情况吗?

仅显示日期。小时显示不正确。有人可以帮我解决这个小问题吗?我将永远感激不已。

非常感谢大家。

来自数据库的值。

select (CONCAT(data_registo, ' ', hora_registo)) as data,  temperatura from registos where idSensor like 'Thermomether001' and data_registo between '2014-07-20' and '2014-07-24'

2014-07-20 00:26:03 19.4
2014-07-20 00:55:07 18.4
2014-07-20 01:58:14 18.4
2014-07-20 03:03:02 18.4
2014-07-20 04:40:13 19.3
2014-07-20 05:10:56 18.4
2014-07-20 05:41:40 19.3
.
.
.
2014-07-24 21:40:04 19.3
2014-07-24 22:09:42 19.2
2014-07-24 22:39:20 18.9
2014-07-24 23:02:19 19.8
2014-07-24 23:38:37 19.7

图表

enter image description here

如您所见,仅显示日期。显示的时间未在数据库中注册。谁能帮我吗?

图表代码

JFreeChart createChart(XYDataset数据集){

    JFreeChart chart = ChartFactory.createTimeSeriesChart(
"Chart", // title
"Date", // x-axis label
"Temperature", // y-axis label
dataset, // data
true, // create legend?
true, // generate tooltips?
false // generate URLs?
);


XYPlot plot = (XYPlot) chart.getPlot();


DateAxis axis = (DateAxis) plot.getDomainAxis();
axis.setDateFormatOverride(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));

return chart;

}


XYDataset createDataset() throws SQLException, ParseException {
Connection con = null;
String databaseURL = "jdbc:sqlserver://-----;IntegratedSecurity=true";
String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
try {
Class.forName(driverName).newInstance();
} catch (Exception ex) {
System.out.println("");
}

con = (Connection) DriverManager.getConnection(databaseURL);

if (!con.isClosed()) {
System.out.println("Successfully connected to the DataBase Server...");
}

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String d1 = sdf.format(jDateChooser1.getDate());
String d2 = sdf.format(jDateChooser2.getDate());
String c1 = jComboBoxSensores.getSelectedItem().toString();

Statement statement;
statement = (Statement) con.createStatement();
String selectQuery ="select (CONCAT(data_registo, ' ', hora_registo)) as data, temperatura from registos where idSensor like '"+c1+"' and temperatura not in ('0.0') and data_registo between '"+d1+"' and '"+d2+"'";
ResultSet resultSet = null;
resultSet = statement.executeQuery(selectQuery);

TimeSeries s1 = new TimeSeries(c1);
while (resultSet.next()) {

String data = (String) resultSet.getObject("data");
String temperatura = (String) resultSet.getObject("temperatura");

SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date dateI = sdf2.parse(data);

double value = Double.parseDouble(temperatura);



s1.addOrUpdate(new Hour(dateI), value);

}

resultSet.close();


TimeSeriesCollection dataset = new TimeSeriesCollection();

dataset.addSeries(s1);

return dataset;


}

JPanel createDemoPanel() throws SQLException, ParseException {
JFreeChart chart = createChart(createDataset());
ChartPanel panel = new ChartPanel(chart);
panel.setFillZoomRectangle(true);
panel.setMouseWheelEnabled(true);
return panel;
}

}

如您所见,仅显示日期。显示的时间未在数据库中注册。谁能帮我吗?

非常感谢大家。

最佳答案

您将 dateI 截断为最接近的小时。相反,请使用 Second 保留从查询中检索到的完整分辨率并将结果存储在模型中。

s1.addOrUpdate(new Second(dateI), value);

在 View 中,您可以setDateFormatOverride()为域轴上所需的格式,如图 here .

axis.setDateFormatOverride(new SimpleDateFormat("yyyy-MM-dd HH"));

关于java - 为什么时间序列集合图表中的数据显示不正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24994704/

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