Java创建柱状图及饼状图
Java创建图表其实还是很方便的,但是要引入相关的jar包。如下
- jfreechart.jar
- jcommon,jar
- gnujaxp.jar
其中最主要的是jfreechart.jar。
下面就让我们先看看创建的图标的运行结果吧。
是不是感觉很生动形象,一目了然呢?
下面让我们一一拉进行分析吧首先是柱状图
我已经在代码中做好了注释,可以直接拿过来使用。
package mytest;
import java.awt.FlowLayout;
import java.awt.Font;
import java.io.File;
import java.io.IOException;
import javax.swing.JFrame;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.general.Dataset;
public class BarChartDemo {
private ChartPanel panel;
/**
* 在柱状图中创建表格的步骤如下: 1、创建表格chart,需要注意相关参数的含义, 2、传进去的数据集是CategoryDataset格式
* 3、获得表格区域块,设置横轴,纵轴及相关字体(防止出现乱卡的状况)
* 4、设置chart的图例legend,并设置条目的字体格式(同样是为了防止出现乱码)
*/
public BarChartDemo() {
CategoryDataset dataset = (CategoryDataset) getDataset();
JFreeChart chart = ChartFactory.createBarChart3D("学历信息统计", "横坐标",
"纵坐标", dataset, PlotOrientation.VERTICAL, true, false, false);
CategoryPlot plot = (CategoryPlot) chart.getCategoryPlot();
CategoryAxis axis = plot.getDomainAxis();
axis.setLabelFont(new Font("宋体", Font.BOLD, 20));
axis.setTickLabelFont(new Font("宋体", Font.BOLD, 20));
ValueAxis rangeAxis = plot.getRangeAxis();
rangeAxis.setLabelFont(new Font("宋体", Font.BOLD, 20));
chart.getLegend().setItemFont(new Font("宋体", Font.BOLD, 20));
chart.getTitle().setFont(new Font("黑体", Font.ITALIC, 22));
panel = new ChartPanel(chart, true);
//下面是王章偶然看到的生成图表图片的方法
File dir = new File("F:\\MyPicture\\");
if (!dir.exists()) {
dir.mkdir();
}
String fName = String.valueOf(System.currentTimeMillis())+"BarChart.png";
File file = new File("F:\\MyPicture\\", fName);
try {
ChartUtilities.saveChartAsPNG(file, chart, 400, 250);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}//生成一个png图片
}
public ChartPanel getChartPanel() {
return panel;
}
/**
* 需要注意的是在向数据集中添加数据的时候 使用的是dataset.addValue()方法,而在饼状图的数据集添加数据的过程中,使用的是dataset.setValue()方法
* 这一点应该尤其注意。以免出错!
* @return
*/
private static Dataset getDataset() {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(1, "郭1", "大学");
dataset.addValue(2, "郭2", "高中");
dataset.addValue(3, "郭3", "高中");
dataset.addValue(4, "郭4", "高中");
dataset.addValue(5, "郭5", "初中");
dataset.addValue(5, "郭6", "初中");
dataset.addValue(4, "郭7", "初中");
dataset.addValue(3, "郭8", "小学");
dataset.addValue(2, "郭9", "幼儿园");
dataset.addValue(1, "张10", "幼儿园");
return dataset;
}
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setLayout(new FlowLayout());
frame.add(new BarChartDemo().getChartPanel());
frame.setSize(1000, 600);
frame.setDefaultCloseOperation(0);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
然后是饼状图,里面的注释也是很到位的进行了解释
package mytest;
import java.awt.FlowLayout;
import java.awt.Font;
import java.io.File;
import java.io.IOException;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import javax.swing.JFrame;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.labels.StandardPieSectionLabelGenerator;
import org.jfree.chart.plot.PiePlot;
import org.jfree.data.general.DefaultPieDataset;
public class PieChartDemo {
ChartPanel panel;
/**
* 创建饼状图的步骤如下: 1、创建一个饼状的实例,注意传参的格式,还有需要注意的是此时的数据集应该是defaultPieDataset,
* 而不是CategoryDataset格式 2、获得饼状图的所在区域 3、设置两个格式化的数据格式,为后面的床架饼状图的实例做基础
* 4、细节方面是对无数据、零值、负值等情况的处理 5、最后就是设置在出现汉字的地方进行字体内容的设置了(同样的,这是为了防止出现乱码的状况)
*/
public PieChartDemo() {
DefaultPieDataset dataset = getDataset();
JFreeChart chart = ChartFactory.createPieChart3D("学校占比情况", dataset,
true, false, false);
PiePlot piePlot = (PiePlot) chart.getPlot();
DecimalFormat df = new DecimalFormat("0.00%");
NumberFormat nf = NumberFormat.getInstance();
StandardPieSectionLabelGenerator generator = new StandardPieSectionLabelGenerator(
"{0} {2}", //获得StandardPieSectionLabelGenerator对象,生成的格式,{0}表示section名,
//{1}表示section的值,{2}表示百分比。可以自定义
nf, df);
piePlot.setLabelGenerator(generator);// 设置百分比
piePlot.setLabelFont(new Font("黑体", Font.ITALIC, 20));
// 当饼状图内额米有数据时,作如下数据中设置
piePlot.setNoDataMessage("此时并没有任何数据可用");
piePlot.setCircular(false);
piePlot.setLabelGap(0.02D);
piePlot.setIgnoreNullValues(true);// 设置不显示空位
piePlot.setIgnoreZeroValues(true);// 设置不显示负值或零值
panel = new ChartPanel(chart, true);
chart.getTitle().setFont(new Font("宋体", Font.BOLD, 18));
chart.getLegend().setItemFont(new Font("宋体", Font.BOLD, 20));
//下面是王章偶然看到的生成图表图片的方法
File dir = new File("F:\\MyPicture\\");
if (!dir.exists()) {
dir.mkdir();
}
String fName = String.valueOf(System.currentTimeMillis())+"pie.png";
File file = new File("F:\\MyPicture\\", fName);
try {
ChartUtilities.saveChartAsPNG(file, chart, 400, 250);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}//生成一个png图片
}
/**
* 需要注意的是在向数据集中添加数据的时候调用的是dataset.setvalue()方法,而不是柱状图中的addValue()方法
* 这一点应该尤其注意一下,以免在使用的时候出现错误
* @return
*/
private DefaultPieDataset getDataset() {
DefaultPieDataset dataset = new DefaultPieDataset();
dataset.setValue("郭1", 1);
dataset.setValue("郭2", 2);
dataset.setValue("郭3", 3);
dataset.setValue("郭4", 4);
dataset.setValue("郭5", 3);
dataset.setValue("郭6", 2);
dataset.setValue("郭7", 1);
return dataset;
}
public ChartPanel getPieChartPanel() {
return panel;
}
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setLayout(new FlowLayout());
frame.add(new PieChartDemo().getPieChartPanel());
frame.setSize(1000, 700);
frame.setVisible(true);
}
}
这里并没有创建折线图,大致的步骤和这两种图的创建相当。详细链接
总结:
java创建图表来对数据进行分析,使得数据的展示形式更加生动,具体。
这里我还得到了一个知识点,那就是利用相关方法,来实现对这种图集的生成操作,只需指定号生成图像的保存路径及保存名称即可实现。如下
//下面是王章偶然看到的生成图表图片的方法
File dir = new File("F:\\MyPicture\\");
if (!dir.exists()) {
dir.mkdir();
}
String fName = String.valueOf(System.currentTimeMillis())+"pie.png";
File file = new File("F:\\MyPicture\\", fName);
try {
ChartUtilities.saveChartAsPNG(file, chart, 400, 250);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}//生成一个png图片
the end!
Java创建柱状图及饼状图的更多相关文章
- WPF、Silverlight项目中使用柱状图、饼状图、折线图
在开发的过程中,可能会遇到柱状图.饼状图.折线图来更好的显示数据,最近整理了一下,遂放出来望需要的朋友可以参考.本文仅仅是简单显示,如需复杂显示效果请参考官网代码示例.----本文代码使用WPF,Si ...
- 使用FusionCharts出柱状图和饼状图
在最近的项目中,需要使用出图,能够查看柱状图,饼状图等效果,刚开始我们用JS写的效果,发现效果不理想,找了一个JS插件发现效果还是不理想,客户也不满意,客户希望要很炫的效果,最后我们使用了Fusion ...
- FusionChart实现柱状图、饼状图的动态数据显示 附Demo
最近做的项目中需要用饼状图显示——'问卷调查'的统计结果(之前用过FusionChart做过柱状图的数据展示,那还是两年前的事了),在网上查了下FusionChart实现饼状图显示方面的资料,却发现资 ...
- 前端数据统计用做Bootstrap的一些柱状图、饼状图和折线图案例
Bootstrap,来自 Twitter,是目前最受欢迎的前端框架.Bootstrap 是基于 HTML.CSS.JAVASCRIPT 的,它简洁灵活,使得 Web 开发更加快捷. Bootstrap ...
- FusionChart实现柱状图、饼状图的动态数据显示
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- echarts 柱状图和饼状图动态获取后台数据
运用echarts来实现图表 1.首先下载echarts包 http://echarts.baidu.com/echarts2/doc/example.html,在这里我下载的是 2.将echart ...
- 使用 jfreechart 生成 曲线、柱状图、饼状图、分布图 展示到JSP
虽然现在JS做报表和图形展示已经非常普遍和漂亮了,但是不能忽略有jfreechart 这样一种东西! 这些翻阅资料,在看以前写的示例时发现了关于jfreechart 的简单示例,不管怎样发上来分享一下 ...
- DevExpress使用之ChartControl控件绘制图表(多坐标折线图、柱状图、饼状图)
最近因为公司项目需要用到WinForm的DecExpress控件,在这里把一些使用方法总结一下. DevExpress中有一个专门用来绘制图表的插件ChartControl,可以绘制折线图.饼状图.柱 ...
- iOS:使用贝塞尔曲线绘制图表(折线图、柱状图、饼状图)
1.介绍: UIBezierPath :画贝塞尔曲线的path类 UIBezierPath定义 : 贝赛尔曲线的每一个顶点都有两个控制点,用于控制在该顶点两侧的曲线的弧度. 曲线的定义有四个点:起始点 ...
随机推荐
- salesforce lightning零基础学习(三) 表达式的!(绑定表达式)与 #(非绑定表达式)
在salesforce的classic中,我们使用{!expresion}在前台页面展示信息,在lightning中,上一篇我们也提及了,如果展示attribute的值,可以使用{!v.expresi ...
- 通讯协议序列化解读(二) protostuff详解教程
上一篇文章 通讯协议序列化解读(一):http://www.cnblogs.com/tohxyblog/p/8974641.html 前言:上一面文章我们介绍了java序列化,以及谷歌protobu ...
- Latex:TexStudio的使用
http://blog.csdn.net/pipisorry/article/details/54565608 Texsdudio 快捷键 The keyboard shortcuts can be ...
- (二)ROS系统架构及概念 ROS Architecture and Concepts 以Kinetic为主更新 附课件PPT
第2章 ROS系统架构及概念 ROS Architecture and Concepts PPT说明: 正文用白色,命令或代码用黄色,右下角为对应中文译著页码. 这一章需要掌握ROS文件系统,运行图级 ...
- 在Spring Boot中使用数据库事务
我们在前面已经分别介绍了如何在Spring Boot中使用JPA(初识在Spring Boot中使用JPA)以及如何在Spring Boot中输出REST资源(在Spring Boot中输出REST资 ...
- Goaccess解析nginx日志备忘
参考 http://nginx.org/en/docs/http/ngx_http_log_module.html?&_ga=1.92028562.949762386.1481787781#l ...
- Android反编译(未混淆的apk)
Android反编译(未混淆的apk) 工具 dex2jar 下载地址:我的CSDN 或者 官网 jd-gui 下载地址:我的CSDN 或者 官网 反编译步骤 1. 将APK解压缩,获取classes ...
- 从Stage角度看cassandra write
声明 文章发布于CSDN cassandra concurrent 具体实现 cassandra并发技术文中介绍了java的concurrent实现,这里介绍cassandra如何基于java实现ca ...
- Zookeeper的安装配置及基本开发
一.简介 Zookeeper 是分布式服务框架,主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务.状态同步服务.集群管理.分布式应用配置项的管理等等. ZooKeeper的目标就 ...
- Java使用agent实现main方法之前
创建Agent项目 PreMainExecutor 类,在main方法之前执行此方法 public class PreMainExecutor { public static void premain ...