Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Wykres JFreechart z czasem z bazy danych SQL

Cytowany przykład przy użyciu JDBCXYDataset działa również z JDBCCategoryDataset , jak pokazano poniżej oraz w Twoim oryginalnym pytanie . Korzystanie z JDBCCategoryDataset , „Pierwsza kolumna będzie nazwą kategorii, a [pozostałe] kolumny [będą] wartościami (każda kolumna reprezentuje serię);” przy użyciu JDBCXYDataset , „Pierwsza kolumna będzie wartościami na osi x, a pozostałe kolumny na osi y”. W rezultacie spodziewam się, że Twoje zapytanie będzie wyglądało mniej więcej tak:

SELECT Date_Time, PV …

Ponieważ oś domeny to czas, rozważ obrócenie pozycji etykiet, jak pokazano tutaj . Przy podejmowaniu decyzji należy pamiętać, że TimeSeries jest mniej elastyczny w kwestii orientacji, ale bardziej elastyczny w zakresie formatowania.

Następujące zmiany w przykładzie zilustrować za pomocą wartości zmiennoprzecinkowych. Zwróć uwagę, że PV jest typu float i PreparedStatement używa 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. Nazewnictwo schematów hibernacji różni się w zależności od systemu operacyjnego

  2. Nie można połączyć się z serwerem mysql za pomocą go i docker - wybierz tcp 127.0.0.1:3306:connect:połączenie odrzucone

  3. Tabela błędów Mysql 1050 już istnieje, podczas gdy w rzeczywistości tak nie jest

  4. MySql cursors.execute() z tylko jednym parametrem:Dlaczego ciąg jest pocięty na listę?

  5. Now() a GetDate()