龙空技术网

使用JFreeChart制作图表详细总结(一)

数字化与智能化 141

前言:

此刻看官们对“jsp设置背景透明度在哪”大概比较关注,我们都需要分析一些“jsp设置背景透明度在哪”的相关知识。那么小编同时在网摘上搜集了一些有关“jsp设置背景透明度在哪””的相关资讯,希望咱们能喜欢,同学们快快来学习一下吧!

《大数据和人工智能交流》头条号向广大初学者新增C 、Java 、Python 、Scala、javascript 等目前流行的计算机、大数据编程语言,希望大家以后关注本头条号更多的内容。

一、获取图片

JfreeChart组件能够生成jpeg、png格式图片,其输出方式直接存在硬盘中,也可以交给JfreeChart组件进行管理。在web应用中,所生成的图形报表一般为动态报表,如果每次生成的图表都进行存储,将产生大量的垃圾文件,因此由JfreeChart组件进行管理是一个不错的选择

1、配置JFreeChart

JfreeChart组件提供一个Servlet文件用于获取生成的图片,此Servlet文件存在JfreeChart组件包中,所以在使用过程中,需要将其配置在web.xml中

<servlet>

<servlet-name>DisplayChart</servlet-name>

<servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name> DisplayChart </servlet-name>

<url-pattern>/servlet/ DisplayChart </url-pattern>

</servlet-mapping>

2、获取图片

在输出图片之前,首先要生成JfreeChart组件所绘制的图片。此操作通过调用ServletUtilities类的saveChartAsJPEG()方法来实现,它返回一个.jpeg格式的图片:

public static String saveChartAsJPEG(JfreeChart chart,int width,int height,HttpSession session)

通过此方法生成图片后,调用已注册的JfreeChart提供的Servlet类DisplayChart即可获取图片的相对路径,例如:

<%

String fileName = ServletUtilities.saveChartAsJPEG(

ChartUtil.createChart(),450,300,session);

String graphURL = request.getContextPath() + "/DisplayChart?filename=" + fileName;

%>

上述代码生成个宽度450、高度300的图片,文件名为fileName,路径为graphURL,通过此路径即可对生成的图片进行访问

二、第一个图表案例

第1步:建立项目,引入jar包(jar包已经给提供),其项目结构如下:

第2步:建立自定义绘图工具类ChartUtil

public class ChartUtil {

/**

* 创建数据集合

* @return CategoryDataset对象

*/

public static CategoryDataset createDataSet() {

//实例化DefaultCategoryDataset对象

DefaultCategoryDataset dataSet = new DefaultCategoryDataset();

//向数据集合中添加数据

dataSet.addValue(550, "JavaEE", "Java EE类");

dataSet.addValue(100, "JavaSE", "Java SE类");

dataSet.addValue(950, "Java项目", "Java 项目类");

return dataSet;

}

/**

* 创建JFreeChart对象

* @return JFreeChart对象

*/

public static JFreeChart createChart() {

//创建主题样式

StandardChartTheme standardChartTheme = new StandardChartTheme("CN");

//设置标题字体

standardChartTheme.setExtraLargeFont(new Font("隶书", Font.BOLD, 20));

//设置图例的字体

standardChartTheme.setRegularFont(new Font("微软雅黑", Font.PLAIN, 15));

//设置轴向的字体

standardChartTheme.setLargeFont(new Font("微软雅黑", Font.PLAIN, 15));

ChartFactory.setChartTheme(standardChartTheme); //设置主题样式

//通过ChartFactory创建JFreeChart

JFreeChart chart = ChartFactory.createBarChart3D(

"Java图书销量统计", //图表标题

"Java图书", //横轴标题

"销量(本)", //纵轴标题

createDataSet(), //数据集合

PlotOrientation.VERTICAL, //图表方向

true, //是否显示图例标识

false, //是否显示tooltips

false); //是否支持超链接

return chart;

}

}

第3步:在xml文件已注册的JfreeChart提供的Servlet类DisplayChart

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.5"

xmlns=";

xmlns:xsi=";

xsi:schemaLocation="

;>

<servlet>

<description>JFreeChart</description>

<servlet-name>DisplayChart</servlet-name>

<servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>DisplayChart</servlet-name>

<url-pattern>/DisplayChart</url-pattern>

</servlet-mapping>

</web-app>

第4步:编写index.jsp输出图表

<%@ page language="java" contentType="text/html" pageEncoding="GBK"%>

<%@ page import="org.jfree.chart.servlet.ServletUtilities,com.test.ChartUtil"%>

<!DOCTYPE HTML>

<html>

<head>

<title>Java图书销量统计</title>

</head>

<body>

<%

String fileName = ServletUtilities.saveChartAsJPEG(ChartUtil.createChart(),450,300,session);

String graphURL = request.getContextPath() + "/DisplayChart?filename=" + fileName;

%>

<img src="<%=graphURL%>" border="1">

</body>

</html>

第5步:部署运行输入,结果如下:

三、图表相关属相设置

为了使生成的图表美观、大方需要对绘图区、坐标轴等进行设置

public class ChartUtil {

/**

* 创建数据集合

* @return CategoryDataset对象

*/

public static CategoryDataset createDataSet() {

//实例化DefaultCategoryDataset对象

DefaultCategoryDataset dataSet = new DefaultCategoryDataset();

//添加第一季度数据

dataSet.addValue(6000, "第一季度", "Java SE类");

dataSet.addValue(3000, "第一季度", "Java ME类");

dataSet.addValue(12000, "第一季度", "Java EE类");

//添加第二季度数据

dataSet.addValue(8000, "第二季度", "Java SE类");

dataSet.addValue(4000, "第二季度", "Java ME类");

dataSet.addValue(6000, "第二季度", "Java EE类");

//添加第三季度数据

dataSet.addValue(5000, "第三季度", "Java SE类");

dataSet.addValue(4000, "第三季度", "Java ME类");

dataSet.addValue(8000, "第三季度", "Java EE类");

//添加第四季度数据

dataSet.addValue(8000, "第四季度", "Java SE类");

dataSet.addValue(2000, "第四季度", "Java ME类");

dataSet.addValue(9000, "第四季度", "Java EE类");

return dataSet;

}

/**

* 创建JFreeChart对象

* @return JFreeChart对象

*/

public static JFreeChart createChart() {

//通过ChartFactory创建JFreeChart

JFreeChart chart = ChartFactory.createBarChart3D(

"Java图书销量统计", //图表标题

"Java图书", //横轴标题

"销量(本)", //纵轴标题

createDataSet(), //数据集合

PlotOrientation.VERTICAL, //图表方向

true, //是否显示图例标识

false, //是否显示tooltips

false); //是否支持超链接

//背景图片

Image image = null;

try {

//创建背景图片

image = ImageIO.read(ChartUtil.class.getResource("test.jpg"));

} catch (IOException e) {

e.printStackTrace();

}

//设置标题字体

chart.getTitle().setFont(new Font("隶书",Font.BOLD,25));

//设置图例类别字体

chart.getLegend().setItemFont(new Font("微软雅黑",Font.PLAIN,12));

chart.setBorderVisible(true); //设置显示边框

//实例化TextTitle对象

TextTitle subTitle = new TextTitle("2012年Java类图书全国销量统计(Java SE、Java ME、Java EE)");

//设置居中显示

subTitle.setVerticalAlignment(VerticalAlignment.BOTTOM);

chart.addSubtitle(subTitle); //添加子标题

//获取绘图区对象

CategoryPlot plot = chart.getCategoryPlot();

plot.setForegroundAlpha(0.8F); //设置绘图区前景色透明度

plot.setBackgroundAlpha(0.5F); //设置绘图区背景色透明度

plot.setBackgroundImage(image); //设置绘图区背景图片

//获取坐标轴对象

CategoryAxis categoryAxis = plot.getDomainAxis();

//设置坐标轴标题字体

categoryAxis.setLabelFont(new Font("微软雅黑",Font.PLAIN,12));

//设置坐标轴标尺值字体

categoryAxis.setTickLabelFont(new Font("微软雅黑",Font.PLAIN,12));

//设置坐标轴标题旋转角度

categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);

//获取数据轴对象

ValueAxis valueAxis = plot.getRangeAxis();

//设置数据轴字体

valueAxis.setLabelFont(new Font("微软雅黑",Font.PLAIN,12));

//获取图片渲染对象

BarRenderer3D renderer = new BarRenderer3D();

renderer.setItemMargin(0.32); //设置柱子间的间距

plot.setRenderer(renderer); //设置图片渲染对象

return chart;

}

}

《大数据和人工智能交流》的宗旨

1、将大数据和人工智能的专业数学:概率数理统计、线性代数、决策论、优化论、博弈论等数学模型变得通俗易懂。

2、将大数据和人工智能的专业涉及到的数据结构和算法:分类、聚类 、回归算法、概率等算法变得通俗易懂。

3、最新的高科技动态:数据采集方面的智能传感器技术;医疗大数据智能决策分析;物联网智慧城市等等。

根据初学者需要会有C语言、Java语言、Python语言、Scala函数式等目前主流计算机语言。

根据读者的需要有和人工智能相关的计算机科学与技术、电子技术、芯片技术等基础学科通俗易懂的文章。

标签: #jsp设置背景透明度在哪