转载自  JFreeChart XY图

在xy图(散点图)是根据一个数据系列组成的x和y值的列表。每个值对(x,y)是坐标系中的一个点。这里1值确定水平(X)位置,而另一个确定垂直(Y)位置。本章演示了如何使用JFreeChart从一个给定的业务数据创建XY图表。

业务数据

考虑这种情况,我们要创建一个XY图表所有主要浏览器的一个例子。在这里,不同的性能分数是从不同类型的人们聚集,如下所示:

Firefox Category(X) Score(Y)
1.0 1.0
2.0 4.0
3.0 3.0
Chrome Category(X) Score(Y)
1.0 4.0
2.0 5.0
3.0 6.0
IE Category(X) Score(Y)
3.0 4.0
4.0 5.0
5.0 4.0

基于AWT的应用

以下是对从上述给定的信息创建XY图表的代码。此代码可以在AWT应用程序嵌入一个XY图表。

import java.awt.Color;
import java.awt.BasicStroke;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.data.xy.XYDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.xy.XYSeriesCollection;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;public class XYLineChart_AWT extends ApplicationFrame
{public XYLineChart_AWT( String applicationTitle, String chartTitle ){super(applicationTitle);JFreeChart xylineChart = ChartFactory.createXYLineChart(chartTitle ,"Category" ,"Score" ,createDataset() ,PlotOrientation.VERTICAL ,true , true , false);ChartPanel chartPanel = new ChartPanel( xylineChart );chartPanel.setPreferredSize( new java.awt.Dimension( 560 , 367 ) );final XYPlot plot = xylineChart.getXYPlot( );XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer( );renderer.setSeriesPaint( 0 , Color.RED );renderer.setSeriesPaint( 1 , Color.GREEN );renderer.setSeriesPaint( 2 , Color.YELLOW );renderer.setSeriesStroke( 0 , new BasicStroke( 4.0f ) );renderer.setSeriesStroke( 1 , new BasicStroke( 3.0f ) );renderer.setSeriesStroke( 2 , new BasicStroke( 2.0f ) );plot.setRenderer( renderer ); setContentPane( chartPanel ); }private XYDataset createDataset( ){final XYSeries firefox = new XYSeries( "Firefox" );          firefox.add( 1.0 , 1.0 );          firefox.add( 2.0 , 4.0 );          firefox.add( 3.0 , 3.0 );          final XYSeries chrome = new XYSeries( "Chrome" );          chrome.add( 1.0 , 4.0 );          chrome.add( 2.0 , 5.0 );          chrome.add( 3.0 , 6.0 );          final XYSeries iexplorer = new XYSeries( "InternetExplorer" );          iexplorer.add( 3.0 , 4.0 );          iexplorer.add( 4.0 , 5.0 );          iexplorer.add( 5.0 , 4.0 );          final XYSeriesCollection dataset = new XYSeriesCollection( );          dataset.addSeries( firefox );          dataset.addSeries( chrome );          dataset.addSeries( iexplorer );return dataset;}public static void main( String[ ] args ) {XYLineChart_AWT chart = new XYLineChart_AWT("Browser Usage Statistics", "Which Browser are you using?");chart.pack( );          RefineryUtilities.centerFrameOnScreen( chart );          chart.setVisible( true ); }
}

让我们保存XYLineChart_AWT.java文件如上面的Java代码,然后从命令提示符下编译并运行它,如下所示:

$javac XYLineChart_AWT.java
$java XYLineChart_AWT

如果一切顺利,它会编译并运行生成以下XY图:

创建JPEG图像

让我们重新编写上面的例子,在命令行生成JPEG图像。

import java.io.*;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.data.xy.XYSeries;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.xy.XYSeriesCollection;
import org.jfree.chart.ChartUtilities; public class XYLineChart_image
{public static void main( String[ ] args )throws Exception{final XYSeries firefox = new XYSeries( "Firefox" );firefox.add( 1.0 , 1.0 );firefox.add( 2.0 , 4.0 );firefox.add( 3.0 , 3.0 );final XYSeries chrome = new XYSeries( "Chrome" );chrome.add( 1.0 , 4.0 );chrome.add( 2.0 , 5.0 );chrome.add( 3.0 , 6.0 );final XYSeries iexplorer = new XYSeries( "InternetExplorer" );iexplorer.add( 3.0 , 4.0 );iexplorer.add( 4.0 , 5.0 );iexplorer.add( 5.0 , 4.0 );final XYSeriesCollection dataset = new XYSeriesCollection( );dataset.addSeries( firefox );dataset.addSeries( chrome );dataset.addSeries( iexplorer );JFreeChart xylineChart = ChartFactory.createXYLineChart("Browser usage statastics", "Category","Score", dataset,PlotOrientation.VERTICAL, true, true, false);int width = 640; /* Width of the image */int height = 480; /* Height of the image */ File XYChart = new File( "XYLineChart.jpeg" ); ChartUtilities.saveChartAsJPEG( XYChart, xylineChart, width, height);}
}

让我们保存在XYLineChart_image.java文件如上面的Java代码,然后从命令提示符下编译并运行它,如下所示:

$javac XYLineChart_image.java
$java XYLineChart_image

如果一切顺利,它会编译并运行在当前的目录中创建JPEG图像文件namedXYLineChart.jpeg。

JFreeChart(五)之XY图相关推荐

  1. Java通过JFreeChart实现(饼图、柱状图、层叠柱状图、折线图、散点图、雷达图、环形图、仪表盘图、XY图)生成图片和下载

    目录 1.添加依赖 2.工具类 2.1 JFreeChart工具类 2.2  GenerateChartUtil 图表生成工具类 2.3 GeneratePieChartUtil 饼图生成工具类 3. ...

  2. JFreeChart应用实例-折线图

    http://www.tuicool.com/articles/Nr2Yna JFreeChart在制作折线图的时候可以使用两种不同的方式 package Line;import java.awt.C ...

  3. java导出pdf报告之六:使用jfreechart生成饼状图和柱状图

    关于使用jfreechart生成饼状图和柱状图网上也有一大推,我在这里也不做太多介绍,就直接附上我的实现,并添加了一下注释,供大家参考. 生成饼状图: /*** @param name 图片的名称* ...

  4. c++ 图的连通分量是什么_学习数据结构第五章:图(图的遍历操作)

    第五章:图(图的遍历操作) 1.图的遍历 图的遍历:从图中某一顶点出发,按照某种搜索方法沿着图中的边对图中的所有顶点访问依次且仅访问一次 其实树的层次遍历和图的广度优先搜索类似,可以把这个二叉树看成一 ...

  5. 假设以邻接矩阵作为图的存储结构_学习数据结构第五章:图(图的存储方法)...

    第五章:图(图的存储方法) 1.邻接矩阵法 下面是一个无向图的表示,我们使用一个一维数组存放点集,使用一个二维数组存放边集 二维数组表示边:行号表示其实端点,列号表示结束端点,值表示该边是否存在,以及 ...

  6. labview—XY图的使用

    文章目录 1.效果演示 2.如何使用 3.实践--在XY图上画圆和椭圆 写在前面:为了学习XY图的使用,本文首先分析了一个labview自带的范例,然后自定义了一个显示圆和椭圆的程序. 我们根据lab ...

  7. 日语学习之——五十音图

    前言 学习外语最难的是如何开始-->从哪儿入手-->如何入门-->循序渐进:本文介绍个人在学习外语时的摸索:以新东方日语网络课程为基础+京东阅读(微信阅读)+翻译软件(百度翻译/有道 ...

  8. 日语学习之——五十音图及单词(3)

    五十音图 一:ま行(辅音M+元音)(M-第7行) 元音行 あ段 い段 う段 え段 お段 ま行 ま マ ma み ミ mi む ム mu め メ me も モ mo 相关单词 假名 日本汉字 中文意思 ...

  9. 日语学习之——五十音图及单词(2)

    五十音图 一:な行(辅音N+元音)(N-第5行) 元音行 あ段 い段 う段 え段 お段 な行 な ナ na に 二 ni ぬ ヌ nu ね ネ ne の ノ no 相关单词 假名 日本汉字 中文意思 ...

最新文章

  1. c++类的应用和权限
  2. 2016-2017 ACM-ICPC Southeastern European Regional Programming Contest (SEERC 2016)
  3. svn 文件状态标记含义
  4. 22-高级特性之内建方法(3)
  5. [Xcode 实际操作]六、媒体与动画-(1)使用图形上下文按一定比例缩放图片
  6. AngularJS笔记之创建服务方式比较 : factory vs service vs provider
  7. 使用飞书webhook发送图片消息
  8. 施工部署主要不包括_建筑工程施工方案及培训实例
  9. Cortex-M0(3)---ARM Cortex-M0 异常与中断
  10. Unity3D研究院之获取摄像机的视口区域(转)
  11. Javascript综合应用小案例
  12. 出门问问发布无线智能耳机,李志飞:语音交互的下一个爆点
  13. 计算机课程布置作业,计算机是如何工作的(教案)
  14. 主题:jsoup使用
  15. 微信小程序使用webview打开pdf文档及显示网页内容
  16. C#/.NET 上位机快速入门1——界面渐变设计、实现无边框拖动、关闭的淡出效果、基于socket实现与PLC服务器通信
  17. 联发科处理器真有那么不堪吗?
  18. 【华人学者风采】魏少军 清华大学
  19. 为什么有的域名需要加WWW才能访问?
  20. Elliptic Curve Cryptography (ECC) and Pairings 椭圆曲线密码学与配对

热门文章

  1. 储存引擎InnoDB 索引选择 为何是B+树 而不是 B树 哈希表
  2. [JavaWeb-Bootstrap]Bootstrap响应式布局
  3. 2019年第十届蓝桥杯国赛B组试题D-求值-枚举
  4. POJ 3984 迷宫问题
  5. java arraylist 源代码_java中ArrayList的源代码是什么
  6. python序列数据类型_Python 数据类型 之 序列类型
  7. 最大公约数,最小公倍数,质因式分解
  8. Spring boot——起步依赖
  9. Acwing -- 单调队列优化的DP问题
  10. 【模板】差分约束算法