sql >> データベース >  >> RDS >> Mysql

データベースからのjfreechartの散布図

    この完全な例では、メモリ内に適切なデータベーステーブルを作成し、それを JDBCXYDataset データセットを散布図に表示します。最初の列がドメインになり、連続する列が個々のシリーズになることに注意してください。

    import java.awt.EventQueue;
    import java.sql.Connection;
    import java.sql.Date;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.Calendar;
    import java.util.Random;
    import javax.swing.JFrame;
    import org.jfree.chart.ChartFactory;
    import org.jfree.chart.ChartPanel;
    import org.jfree.chart.JFreeChart;
    import org.jfree.chart.axis.DateAxis;
    import org.jfree.chart.plot.PlotOrientation;
    import org.jfree.chart.plot.XYPlot;
    import org.jfree.data.jdbc.JDBCXYDataset;
    
    /**
     * @see http://stackoverflow.com/a/24592754/230513
     */
    public class JDBCTest {
    
        private static final int N = 30;
        private static final Random r = new Random();
    
        private void display() {
            JFrame f = new JFrame("JDBCTest");
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            JDBCXYDataset jds = createDataset();
            JFreeChart chart = ChartFactory.createScatterPlot("Inventory",
                "Date", "Count", jds, PlotOrientation.VERTICAL, true, true, false);
            XYPlot plot = chart.getXYPlot();
            plot.setDomainAxis(new DateAxis("Date"));
            f.add(new ChartPanel(chart));
            f.pack();
            f.setLocationRelativeTo(null);
            f.setVisible(true);
            for (int i = 0; i < jds.getItemCount(); i++) {
                System.out.println(new Date(jds.getX(0, i).longValue()));
            }
        }
    
        private JDBCXYDataset createDataset() {
            try {
                Connection conn = DriverManager.getConnection(
                    "jdbc:h2:mem:test", "", "");
                Statement st = conn.createStatement();
                st.execute("create table inventory(when date, n1 integer, n2 integer)");
                PreparedStatement ps = conn.prepareStatement(
                    "insert into inventory values (?, ?, ?)");
                Calendar c = Calendar.getInstance();
                for (int i = 0; i < N; i++) {
                    ps.setDate(1, new Date(c.getTimeInMillis()));
                    ps.setInt(2, N / 3 + r.nextInt(N / 3));
                    ps.setInt(3, N / 2 + r.nextInt(N / 3));
                    ps.execute();
                    c.add(Calendar.MONTH, 1);
                }
                JDBCXYDataset jds = new JDBCXYDataset(conn);
                jds.executeQuery("select when, n1, n2 from inventory");
                return jds;
            } catch (SQLException ex) {
                ex.printStackTrace(System.err);
            }
            return null;
        }
    
        public static void main(String[] args) {
            EventQueue.invokeLater(new Runnable() {
                @Override
                public void run() {
                    new JDBCTest().display();
                }
            });
        }
    }
    



    1. SQLでNULLがNULLと一致しないのはなぜですか?

    2. 同じテーブルフィールドでのSailsjsMysqlORM複数クエリ

    3. MariaDBの日時値から分を減算する方法

    4. ストアドプロシージャを作成する前に存在するかどうかを確認する方法