Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagan JFreechart dengan Waktu dari Database SQL

Contoh yang dikutip menggunakan JDBCXYDataset juga bekerja dengan JDBCCategoryDataset , seperti yang ditunjukkan di bawah ini dan dalam pertanyaan asli Anda . Menggunakan JDBCCategoryDataset , "Kolom pertama akan menjadi nama kategori dan [kolom] yang tersisa [akan] nilai (setiap kolom mewakili rangkaian);" menggunakan JDBCXYDataset , "Kolom pertama akan menjadi sumbu x dan kolom yang tersisa adalah nilai sumbu y." Akibatnya, saya mengharapkan kueri Anda menjadi seperti ini:

SELECT Date_Time, PV …

Karena sumbu domain Anda adalah waktu, pertimbangkan untuk memutar posisi label, seperti yang ditunjukkan di sini . Saat memutuskan, perhatikan bahwa TimeSeries kurang fleksibel tentang orientasi tetapi lebih fleksibel tentang pemformatan.

Perubahan berikut pada contoh ilustrasikan menggunakan nilai floating point. Perhatikan bahwa PV bertipe float , dan PreparedStatement menggunakan 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. Menggabungkan rentang interval secara efisien dalam SQL

  2. Menampilkan * dalam tabel

  3. Gabung tabel dalam dua database menggunakan SQLAlchemy

  4. Menggunakan DISTINCT dan COUNT bersama-sama dalam Query MySQL

  5. Cara Menghapus Spasi Dari String di MySQL