我用一条线创建了一个图形,连接到数据库,如下所示。
我刚刚使用了一个返回查询数据的数据集。我需要在不同的数据集中显示更多的行来创建这种思想,但不知道如何实现它,甚至不知道它是否可行。
我见过多行图的例子,但是没有一个能帮助我实现我想要的,那就是返回值从数据库。
String query="select date,tempfrom records where idSensor like 'Sensor1'";
JDBCCategoryDataset dataset = new JDBCCategoryDataset(CriaConexao.getConexao(),
query);
JFreeChart chart = ChartFactory.createLineChart("Records", "date", "temp",
dataset, PlotOrientation.VERTICAL, false, true, true);
BarRenderer renderer = null;
CategoryPlot plot= null;
renderer=new BarRenderer();
ChartFrame frame = new ChartFrame("Records", chart);
frame.setVisible(true);
frame.setSize(400,650);
1条答案
按热度按时间vhmi4jdf1#
来自javadoc的
JDBCCategoryDataset
:sql查询必须至少返回两列。第一列将是类别名称和剩余列值(每列表示一个系列)。对executequery(string)的后续调用将刷新数据集。
因此,您应该在查询中添加列:
您也可以在sql中执行子选择:
如果这还不能给您足够的灵活性,请参考javadoc的下一条建议:
注意:许多人发现这个类在一般使用中限制太多。为了获得最大的灵活性,请考虑编写您自己的代码从结果集读取数据,并直接填充defaultcategorydataset。
---更新---
您可以自动联接(将表与自身联接)将行转换为列,也可以编写自己的代码从结果集读取数据。一种可能的自动加入方法:
如果可能的话
idSensors
,你没有tempfrom
在约会的时候,你需要做一个外部连接。这有点取决于你的数据库,你如何写一个外部连接,所以我不能包括在内。但是先试试这个,看看它是否对你有帮助。