Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Biểu đồ JFreechart với Thời gian từ Cơ sở dữ liệu SQL

ví dụ được trích dẫn sử dụng JDBCXYDataset cũng hoạt động với JDBCCategoryDataset , như được hiển thị bên dưới và trong câu hỏi ban đầu của bạn . Sử dụng JDBCCategoryDataset , "Cột đầu tiên sẽ là tên danh mục và [các] cột còn lại [sẽ là] giá trị (mỗi cột đại diện cho một chuỗi);" sử dụng JDBCXYDataset , "Cột đầu tiên sẽ là trục x và các cột còn lại là giá trị trục y." Do đó, tôi mong rằng truy vấn của bạn sẽ giống như sau:

SELECT Date_Time, PV …

Vì trục miền của bạn là thời gian, hãy xem xét xoay các vị trí nhãn, như được hiển thị tại đây . Khi quyết định, hãy lưu ý rằng TimeSeries kém linh hoạt hơn về hướng nhưng linh hoạt hơn về định dạng.

Các thay đổi sau đây đối với ví dụ minh họa bằng cách sử dụng các giá trị dấu chấm động. Lưu ý rằng PV thuộc loại float PreparedStatement sử dụng setFloat () .

JDBCCategoryDataset jds = createDataset();
JFreeChart chart = ChartFactory.createLineChart("Test", "Time", "PV",
    jds,PlotOrientation.VERTICAL, true, true, false);
CategoryPlot plot = (CategoryPlot) chart.getPlot();
CategoryAxis domain = plot.getDomainAxis();
plot.getDomainAxis().setCategoryLabelPositions(CategoryLabelPositions.UP_45);
…
private JDBCCategoryDataset createDataset() {
    try {
        Connection conn = DriverManager.getConnection(
            "jdbc:h2:mem:test", "", "");
        Statement st = conn.createStatement();
        st.execute("create table data(when timestamp, pv float)");
        PreparedStatement ps = conn.prepareStatement(
            "insert into data values (?, ?)");
        Calendar c = Calendar.getInstance();
        for (int i = 0; i < N; i++) {
            ps.setTimestamp(1, new Timestamp(c.getTimeInMillis()));
            ps.setFloat(2, (float)r.nextGaussian() + 2);
            ps.execute();
            c.add(Calendar.SECOND, r.nextInt(60 * 60));
        }
        JDBCCategoryDataset jds = new JDBCCategoryDataset(conn);
        jds.executeQuery("select when, pv from data");
        return jds;
    } catch (SQLException ex) {
        ex.printStackTrace(System.err);
    }
    return null;
}



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Giá trị mặc định không hợp lệ cho trường dấu thời gian 'create_date'

  2. Phạm vi số nguyên SQL khi tạo bảng

  3. Dịch vụ Mysql bị thiếu

  4. Sử dụng Pentaho Kettle, làm cách nào để tải nhiều bảng từ một bảng trong khi vẫn giữ được tính toàn vẹn của tham chiếu?

  5. Chọn tất cả các bản ghi từ một năm trước đến nay