日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

Java 散点图 数据库 代码_java – 来自数据库的jfreechart中的散点图

發(fā)布時(shí)間:2025/3/21 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java 散点图 数据库 代码_java – 来自数据库的jfreechart中的散点图 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

如何使用java中的jfreechart在mysql數(shù)據(jù)庫(kù)表中繪制數(shù)據(jù)的散點(diǎn)圖.我用過(guò)swing庫(kù).

任何鏈接都會(huì)有所幫助.我搜索谷歌但無(wú)法找到理解解決方案.

如果你有代碼,請(qǐng)?zhí)峁┙o我.

實(shí)際上我做了barchart并使用jfreechart繪制它.

我用于條形圖的代碼就在這里.這里display3函數(shù)顯示條形圖.

如何修改它以顯示散點(diǎn)圖?

public void display3() throws SQLException, ClassNotFoundException{

DefaultCategoryDataset dataset = new DefaultCategoryDataset();

String JDBC_DRIVER="com.mysql.jdbc.Driver";

String DB_URL="jdbc:mysql://localhost/data2";

Connection conn;

Statement stmt;

String USER = "root";

String PASS = "";

try{

Class.forName(JDBC_DRIVER);

conn=DriverManager.getConnection(DB_URL,USER,PASS);

System.out.println("Creating statement...");

stmt = conn.createStatement();

String sql;

sql="SELECT * FROM `production` WHERE crop_id = 1 AND location_id = 1";

ResultSet rs=stmt.executeQuery(sql);

while (rs.next()){

//String student = rs.getString("studentname");

String yeartext = rs.getString("year_of_production");

//double value = Double.parseDouble(text);

String productiontext = rs.getString("production_amount");

double production = Double.parseDouble(productiontext);

Integer year = Integer.parseInt(yeartext);

dataset.setValue(production, "production", year);

}

JFreeChart chart = ChartFactory.createBarChart("Bar Graph",// Chart Title

"Year", //horizontal axis label

"Paddy Production", // vertical axis label

dataset, //data

PlotOrientation.VERTICAL, //orientation of chart

true, //include legend

false, // tool tips

true);//urls

CategoryPlot p = chart.getCategoryPlot();

ChartPanel chartPanel = new ChartPanel(chart, false);

jPanel9.setLayout(new BorderLayout());

jPanel9.add(chartPanel, BorderLayout.EAST);

jPanel9.add(chartPanel);

SwingUtilities.updateComponentTreeUI(this);

p.setRangeGridlinePaint(blue);

System.out.println("Database created successfully...");

} catch(SQLException se) {

//Handle errors for JDBC

System.out.println("Connect failed ! ");

se.printStackTrace();

}

}

I finally solved my problem:

優(yōu)化代碼如下,它的工作原理如下:

public void display3() throws SQLException, ClassNotFoundException{

//DefaultCategoryDataset dataset = new DefaultCategoryDataset();

XYSeriesCollection dataset = new XYSeriesCollection();

XYSeries series = new XYSeries("production");

String JDBC_DRIVER="com.mysql.jdbc.Driver";

String DB_URL="jdbc:mysql://localhost/data2";

Connection conn;

Statement stmt;

String USER = "root";

String PASS = "";

try{

Class.forName(JDBC_DRIVER);

conn=DriverManager.getConnection(DB_URL,USER,PASS);

System.out.println("Creating statement...");

stmt = conn.createStatement();

String sql;

sql="SELECT * FROM `production` WHERE crop_id = 1 AND location_id = 1";

ResultSet rs=stmt.executeQuery(sql);

while (rs.next()){

//String student = rs.getString("studentname");

String yeartext = rs.getString("year_of_production");

//double value = Double.parseDouble(text);

String productiontext = rs.getString("production_amount");

double production = Double.parseDouble(productiontext);

double year = Double.parseDouble(yeartext);

series.add(year,production) ;

//dataset.addSeries(series);

}

dataset.addSeries(series);

JFreeChart chart = ChartFactory.createScatterPlot("Scatter Plot","Year","Paddy Production", dataset);

//CategoryPlot p = chart.getCategoryPlot();

//XYPlot xyplot = (XYPlot)jfreechart.getPlot();

//https://stackoverflow.com/questions/12417732/jfreechart-with-scroller

ChartPanel chartPanel = new ChartPanel(chart, false);

jPanel9.setLayout(new BorderLayout());

jPanel9.add(chartPanel, BorderLayout.EAST);

jPanel9.add(chartPanel);

SwingUtilities.updateComponentTreeUI(this);

// p.setRangeGridlinePaint(blue);

System.out.println("Database created successfully...");

}catch(SQLException se){

//Handle errors for JDBC

System.out.println("Connect failed ! ");

se.printStackTrace();

// JOptionPane.showMessageDialog(MajorUI.this, err.getMessage());

}

}

解決方法:

此完整示例在內(nèi)存中創(chuàng)建合適的數(shù)據(jù)庫(kù)表,將其查詢到JDBCXYDataset并在散點(diǎn)圖中顯示數(shù)據(jù)集.請(qǐng)注意第一列如何成為域,而連續(xù)列成為單個(gè)系列.

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 https://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();

}

});

}

}

標(biāo)簽:scatter-plot,java,mysql,jfreechart,swing

來(lái)源: https://codeday.me/bug/20190926/1820473.html

總結(jié)

以上是生活随笔為你收集整理的Java 散点图 数据库 代码_java – 来自数据库的jfreechart中的散点图的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。