使用jfreechart生成柱状图、折线图、和饼状图
发布时间:2020-12-13 20:23:21 所属栏目:PHP教程 来源:网络整理
导读:JFreeChart 是JAVA平台上的1个开放的图表绘制类库。它完全使用JAVA语言编写,是为applications,applets,servlets 和JSP等使用所设计。下面我就详细介绍如何使用jfreechart生成柱状图、折线图、和饼状图。 步骤: ①、导入其相应的jcommon⑴.0.16.jar和jfreec
JFreeChart是JAVA平台上的1个开放的图表绘制类库。它完全使用JAVA语言编写,是为applications,applets,servlets 和JSP等使用所设计。下面我就详细介绍如何使用jfreechart生成柱状图、折线图、和饼状图。 步骤: ①、导入其相应的jcommon⑴.0.16.jar和jfreechart⑴.0.13.jar文件(可点击下载) ②、下面就能够写实现各种图形的代码了 A、生成柱状图:
<span style="font-size:18px;">package com.whp.test;
import java.awt.Font;
import java.io.File;
import java.io.IOException;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis3D;
import org.jfree.chart.axis.NumberAxis3D;
import org.jfree.chart.axis.NumberTickUnit;
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.BarRenderer3D;
import org.jfree.data.category.DefaultCategoryDataset;
public class jfreeChart {
public static void main(String[] args) {
// TODO Auto-generated method stub
DefaultCategoryDataset dataset=new DefaultCategoryDataset();
//添加数据
dataset.addValue(98,"数学","张3");
dataset.addValue(87,"语文","张3");
dataset.addValue(68,"李4");
dataset.addValue(89,"李4");
dataset.addValue(56,"王5");
dataset.addValue(96,"王5");
JFreeChart chart=ChartFactory.createBarChart3D(
"成绩统计表","学生姓名",//X轴的标签
"分数",//Y轴的标签
dataset,//图标显示的数据集合
PlotOrientation.VERTICAL,//图象的显示情势(水平或垂直)
true,//是不是显示子标题
true,//是不是生成提示的标签
true); //是不是生成URL链接
//处理图形上的乱码
//处理主标题的乱码
chart.getTitle().setFont(new Font("宋体",Font.BOLD,18));
//处理子标题乱码
chart.getLegend().setItemFont(new Font("宋体",15));
//获得图表区域对象
CategoryPlot categoryPlot = (CategoryPlot)chart.getPlot();
//获得X轴的对象
CategoryAxis3D categoryAxis3D = (CategoryAxis3D)categoryPlot.getDomainAxis();
//获得Y轴的对象
NumberAxis3D numberAxis3D = (NumberAxis3D)categoryPlot.getRangeAxis();
//处理X轴上的乱码
categoryAxis3D.setTickLabelFont(new Font("宋体",15));
//处理X轴外的乱码
categoryAxis3D.setLabelFont(new Font("宋体",15));
//处理Y轴上的乱码
numberAxis3D.setTickLabelFont(new Font("宋体",15));
//处理Y轴外的乱码
numberAxis3D.setLabelFont(new Font("宋体",15));
//处理Y轴上显示的刻度,以10作为1格
numberAxis3D.setAutoTickUnitSelection(false);
NumberTickUnit unit = new NumberTickUnit(10);
numberAxis3D.setTickUnit(unit);
//获得绘图区域对象
BarRenderer3D barRenderer3D = (BarRenderer3D)categoryPlot.getRenderer();
//设置柱形图的宽度
barRenderer3D.setMaximumBarWidth(0.07);
//在图形上显示数字
barRenderer3D.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
barRenderer3D.setBaseItemLabelsVisible(true);
barRenderer3D.setBaseItemLabelFont(new Font("宋体",15));
//在D盘目录下生成图片
File file = new File("chart.jpeg");
try {
ChartUtilities.saveChartAsJPEG(file,chart,800,600);
} catch (IOException e) {
e.printStackTrace();
}
//使用ChartFrame对象显示图象
ChartFrame frame = new ChartFrame("xyz",chart);
frame.setVisible(true);
frame.pack();
}
}
</span> 结果:
B、生成折线图 package com.whp.test;
import java.awt.Font;
import java.awt.Rectangle;
import java.io.File;
import java.io.IOException;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.CategoryAxis3D;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.axis.NumberAxis3D;
import org.jfree.chart.axis.NumberTickUnit;
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.BarRenderer3D;
import org.jfree.chart.renderer.category.LineAndShapeRenderer;
import org.jfree.data.category.DefaultCategoryDataset;
public class jfreeChart1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
// 添加数据
dataset.addValue(98,"王5");
JFreeChart chart = ChartFactory.createLineChart("用户统计报表(所属单位)",// 主标题的名称
"所属单位名称",// X轴的标签
"数量",// Y轴的标签
dataset,// 图标显示的数据集合
PlotOrientation.VERTICAL,// 图象的显示情势(水平或垂直)
true,// 是不是显示子标题
true,// 是不是生成提示的标签
true); // 是不是生成URL链接
// 处理图形上的乱码
// 处理主标题的乱码
chart.getTitle().setFont(new Font("宋体",18));
// 处理子标题乱码
chart.getLegend().setItemFont(new Font("宋体",15));
// 获得图表区域对象
CategoryPlot categoryPlot = (CategoryPlot) chart.getPlot();
// 获得X轴的对象
CategoryAxis categoryAxis = (CategoryAxis) categoryPlot.getDomainAxis();
// 获得Y轴的对象
NumberAxis numberAxis = (NumberAxis) categoryPlot.getRangeAxis();
// 处理X轴上的乱码
categoryAxis.setTickLabelFont(new Font("宋体",15));
// 处理X轴外的乱码
categoryAxis.setLabelFont(new Font("宋体",15));
// 处理Y轴上的乱码
numberAxis.setTickLabelFont(new Font("宋体",15));
// 处理Y轴外的乱码
numberAxis.setLabelFont(new Font("宋体",15));
// 处理Y轴上显示的刻度,以10作为1格
numberAxis.setAutoTickUnitSelection(false);
NumberTickUnit unit = new NumberTickUnit(10);
numberAxis.setTickUnit(unit);
// 获得绘图区域对象
LineAndShapeRenderer lineAndShapeRenderer = (LineAndShapeRenderer) categoryPlot
.getRenderer();
// 在图形上显示数字
lineAndShapeRenderer
.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
lineAndShapeRenderer.setBaseItemLabelsVisible(true);
lineAndShapeRenderer
.setBaseItemLabelFont(new Font("宋体",15));
// 在图形上添加转折点(使用小矩形显示)
Rectangle shape = new Rectangle(10,10);
lineAndShapeRenderer.setSeriesShape(0,shape);
lineAndShapeRenderer.setSeriesShapesVisible(0,true);
//在D盘目录下生成图片
File file = new File("chart1.jpg");
try {
ChartUtilities.saveChartAsJPEG(file,600);
} catch (IOException e) {
e.printStackTrace();
}
// 使用ChartFrame对象显示图象
ChartFrame frame = new ChartFrame("xyz",chart);
frame.setVisible(true);
frame.pack();
}
}
结果: C、生成饼图: package com.whp.test;
import java.awt.Font;
import java.awt.Rectangle;
import java.io.File;
import java.io.IOException;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.CategoryAxis3D;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.axis.NumberAxis3D;
import org.jfree.chart.axis.NumberTickUnit;
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
import org.jfree.chart.labels.StandardPieSectionLabelGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PiePlot3D;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.BarRenderer3D;
import org.jfree.chart.renderer.category.LineAndShapeRenderer;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.general.DefaultPieDataset;
public class jfreeChart3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
DefaultPieDataset dataset = new DefaultPieDataset();
//添加数据
dataset.setValue("张3",40);
dataset.setValue("李4",32);
dataset.setValue("王5",28);
JFreeChart chart = ChartFactory.createPieChart3D("比重统计报表(所属单位)",//主标题的名称
dataset,//图标显示的数据集合
true,//是不是显示子标题
true,//是不是生成提示的标签
true); //是不是生成URL链接
//处理图形上的乱码
//处理主标题的乱码
chart.getTitle().setFont(new Font("宋体",18));
//处理子标题乱码
chart.getLegend().setItemFont(new Font("宋体",15));
//获得图表区域对象
PiePlot3D categoryPlot = (PiePlot3D)chart.getPlot();
//处理图象上的乱码
categoryPlot.setLabelFont(new Font("宋体",15));
//设置图形的生成格式为(上海 2 (10%))
String format = "{0} {1} ({2})";
categoryPlot.setLabelGenerator(new StandardPieSectionLabelGenerator(format));
//在D盘目录下生成图片
File file = new File("chart2.jpg");
try {
ChartUtilities.saveChartAsJPEG(file,600);
} catch (IOException e) {
e.printStackTrace();
}
//使用ChartFrame对象显示图象
ChartFrame frame = new ChartFrame("xyz",chart);
frame.setVisible(true);
frame.pack();
}
}
结果:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |