如何使用java中的jfreechart在mysql数据库表中绘制数据的散点图.我用过swing库.

任何链接都会有所帮助.我搜索谷歌但无法找到理解解决方案.

如果你有代码,请提供给我.

实际上我做了barchart并使用jfreechart绘制它.

我用于条形图的代码就在这里.这里display3函数显示条形图.

如何修改它以显示散点图?

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:

优化代码如下,它的工作原理如下:

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());

}

}

解决方法:

此完整示例在内存中创建合适的数据库表,将其查询到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 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();

}

});

}

}

标签:scatter-plot,java,mysql,jfreechart,swing

来源: https://codeday.me/bug/20190926/1820473.html

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

  1. java语言数据库编程_JAVA语言数据库编程实例详解

    本文主要向大家介绍了JAVA语言数据库编程实例详解,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. DOS命令登录MySQL数据库:mysql -h 127.0.0.1 -u root ...

  2. 用php创建数据库代码,php创建数据库_PHP MySQL 创建数据库与表示例

    摘要 腾兴网为您分享:PHP MySQL 创建数据库与表示例,掌上新华,携程,小牛,苏宁易购等软件知识,以及死神觉醒ios,花视频,s3云存储,华为谷歌器,学成网,cf掌上,互刷天下,抖音批量,润乾报 ...

  3. java 生产者消费者代码_Java生产者和消费者代码

    java 生产者消费者代码 This also helps us to understand the concept of synchronised multi-threading in java, ...

  4. java面向对象基础代码_JAVA基础知识点之Java面向对象

    特点:1:将复杂的事情简单化. 2:面向对象将以前的过程中的执行者,变成了指挥者. 3:面向对象这种思想是符合现在人们思考习惯的一种思想. 过程和对象在我们的程序中是如何体现的呢? 过程其实就是函数: ...

  5. java统计图表代码_java swing下用jfreechart开发图表统计情况

    今天我们来给大家演示一下如何来用jfreechart生成统计图表并展现在swing组件上,首先开发jfreechart需要两个jar包:jcommon-1.0.16.jar和jfreechart-1. ...

  6. java 如何级联删除_Java学习-040-级联删除目录中的文件、目录

    之前在写应用模块,进行单元测试编码的时候,居然脑洞大开居然创建了一个 N 层的目录,到后来删除测试结果目录的时候,才发现删除不了了,提示目录过长无法删除.网上找了一些方法,也找了一些粉碎机,都没能达到 ...

  7. java ldap操作实例_Java Spring Security示例教程中的2种设置LDAP Active Directory身份验证的方法...

    java ldap操作实例 LDAP身份验证是世界上最流行的企业应用程序身份验证机制之一,而Active Directory (Microsoft为Windows提供的LDAP实现)是另一种广泛使用的 ...

  8. java word文本框_Java 读取Word文本框中的文本、图片、表格

    Word可插入文本框,文本框中可嵌入文本.图片.表格等内容.对文档中的已有文本框,也可以读取其中的内容.本文以Java程序代码来展示如何读取文本框,包括读取文本框中的文本.图片以及表格等. [程序环境 ...

  9. Java 散点图 数据库 代码_Java 创建Excel散点图

    散点图是指在回归分析中,数据点在直角坐标系平面上的分布图,表示因变量随自变量而变化的大致趋势,常用于比较跨类别的聚合数据.在excel中,支持创建散点图来实现数据分析,本文将通过java程序代码示例来 ...

最新文章

  1. Linux文本比较命令:diff
  2. 1.6.2 java路径下载_《我的世界1.6.2》官方下载 单机我的世界1.6.2中文整合版_SJ3G游戏中心...
  3. arduino红外遥控库IRremote的IRsend类sendRaw函数溢出问题及其解决方法
  4. SpringMVC的请求-获得请求参数-获得数组类型参数
  5. Android Killer
  6. php redis list llen,redis llen list 命令简介
  7. jQuery—$ is not a function
  8. 让Win10中文操作系统默认使用英文输入法,并且Ctrl+Shift切换中英文
  9. 无线网络安全技术复习重点
  10. svn 服务器端密码修改,svn服务器端设置密码
  11. ROS编译C++文件过程出现 error: expected unqualified-id before ‘.’ token
  12. 业务流程规范的战争兴起:XPDL、BPEL、BPDM
  13. Pycharm2018激活注册码(有效期至2019.05)python
  14. Tomcat配置数据库连接池
  15. python_docx读取word的内容
  16. Redmi K20 安卓9跨版本刷第三方ROM
  17. Google软件测试之道(读书笔记)
  18. 程序模拟网易163邮箱注册帮助文档
  19. mac系统如何转换python版本_[转]mac下Python升级到指定的版本
  20. java工程师英文简历_软件工程师英文简历范文

热门文章

  1. [Linux] killall 、kill 、pkill 命令详解
  2. 通过live555实现H264 RTSP直播(Windows版)
  3. 论文笔记:DeepID2
  4. 进制转换 D进制的 A + B
  5. 计算音频数据音量_【翻译】线性的音量推子……简直像一个个秤砣!
  6. python通过代理发送邮件_Python实现SMTP发送邮件详细教程
  7. a singleton implemention
  8. Java基础-方法(2)和数组
  9. C#进阶之路(一):委托
  10. 物联网:应用创新带来万亿元市场前景