簡體   English   中英

使用JDBCCategoryDataset在折線圖中發布多個系列

[英]Multiple series Issue in line chart using JDBCCategoryDataset

我想添加多個系列以在Java應用程序中使用JFreeChart創建折線圖。 我從數據庫中檢索值,並使用這些值生成圖表。 但是,此時圖表上僅顯示一條線。 任何人都可以幫助同時顯示到行中嗎?

try{

    String query = "SELECT hardware, SUM(Quantity) FROM request_1v2 where date "
                            + "between '"+txt1+"' and '"+txt2+"'group by hardware";

    String querys = "SELECT hardware, SUM(Quantity) FROM request_1v2 where date "
            + "between '"+txt5+"' and '"+txt6+"'group by hardware";                     

    JDBCCategoryDataset dataset1 = new JDBCCategoryDataset(dbConnection.dbConnector());
    dataset1.executeQuery(query);

    JDBCCategoryDataset dataset2 = new JDBCCategoryDataset(dbConnection.dbConnector());
    dataset2.executeQuery(querys);

    System.out.println(dataset1);

    JFreeChart chart = ChartFactory.createLineChart("Hardware booked out between "+txt1+" and "+txt2+"", "Hardware", "Number", dataset1, PlotOrientation.VERTICAL, false, true, true);
    ChartPanel chartPanel = new ChartPanel(chart);
    panel.removeAll();
    panel.add(chartPanel, BorderLayout.CENTER);
    panel.validate();

    JFreeChart chart1 = ChartFactory.createLineChart("Hardware booked out between "+txt5+" and "+txt6+"", "Hardware", "Number", dataset2, PlotOrientation.VERTICAL, false, true, true);
    ChartPanel chartPanel1 = new ChartPanel(chart1);
    panel_1.removeAll();
    panel_1.add(chartPanel1, BorderLayout.CENTER);
    panel_1.validate();

    String sql = "select * from request_1v2 where Date between '"+txt1+"' and '"+txt2+"' order by date desc";
    PreparedStatement pst = connection.prepareStatement(sql);
    pst=connection.prepareStatement(sql);                   
    ResultSet rs = pst.executeQuery();
    table.setModel(DbUtils.resultSetToTableModel(rs));
}catch (Exception e){
    JOptionPane.showConfirmDialog(null, e);
}

JDBCCategoryDataset指定“第一列將是類別名稱,其余列的值(每個列代表一個系列)”。 要獲得兩個系列,您需要選擇三個屬性。 它應該是可以使用別名,在單個查詢來區分引用同一個表,如建議在這里 ,可能是這樣的:

SELECT hardware, SUM(t1.quantity) AS Series1, SUM(t2.quantity) AS Series2
FROM request_1v2 t1, request_1v2 t2
WHERE t1.date BETWEEN …

另外,您可以將兩個數據集合並到新的CategoryDataset並使用它來創建單個圖表。

DefaultCategoryDataset dcd = new DefaultCategoryDataset();
for (int i = 0; i < dataset1.getColumnCount(); i++) {
    dcd.addValue(dataset1.getValue(dataset1.getRowKey(0), dataset1.getColumnKey(i)),
        dataset1.getRowKey(0), dataset1.getColumnKey(i));
    dcd.addValue(dataset2.getValue(dataset2.getRowKey(0), dataset2.getColumnKey(i)),
        dataset2.getRowKey(0), dataset1.getColumnKey(i));
}
JFreeChart chart = ChartFactory.createLineChart(…, dcd, …);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM