jfreechart与struts2结合,实现折线图、饼状图、柱状图的页面显示

本文介绍如何将JFreeChart图表库与Struts2框架整合,实现饼状图、柱状图和折线图的生成。文章提供了详细的步骤说明,包括所需jar包、服务类的创建、Action配置及JSP页面展示等。

工作辞了,找工作之余,学习了一下jfreechart图表生成,结合大虾们的著作,小弟进行了系统的总结如下(获益匪浅):

    struts2与jfreechart结合首先需要一个插件包struts2-jfreechart-plugin-2.1.6.jar;然后导入jfreechart的

两个包以及struts2的7个应用包、包结构见附件a.jpg;附件有项目的压缩包,大家可以下载使用一下。

    写一个公用的service类,里面包含生成柱状图、饼状图、折线图的方法,另附件提供一份jfreechart所有类和方法的

详细解释,你可以根据这些方法把图表设置的美轮美奂。

package aokunsang.chartControl;

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Font;
import java.io.FileOutputStream;
import java.text.DecimalFormat;
import java.text.NumberFormat;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.axis.ValueAxis;
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.LineAndShapeRenderer;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.general.PieDataset;

public class JFreeChartService {
	

//----------------------------------------获取饼状图开始-------------------------------------------------------
	/**
	 * 获取饼状图
	 * @return
	 */
	public static JFreeChart createPieChart(){
		PieDataset pieData = getPieDataset();
		JFreeChart pieChart = ChartFactory.createPieChart3D("水果销量图", pieData, true, true, false);
		PiePlot3D piePlot = (PiePlot3D)pieChart.getPlot();
		piePlot.setBackgroundPaint(Color.WHITE);
		piePlot.setLabelFont(new Font("黑体",Font.BOLD,15));
		resetPlot(piePlot);
		
		pieChart.getLegend().setItemFont(new Font("黑体",Font.BOLD,15));  //设置引用标签字体
		
		pieChart.getTitle().setFont(new Font("华文行楷",Font.BOLD,32));
		
		return pieChart;
	}
	private static PieDataset getPieDataset(){
		DefaultPieDataset data = new DefaultPieDataset();
		data.setValue("苹果", 260);
		data.setValue("荔枝", 250);
		data.setValue("橘子", 150);
		data.setValue("香蕉", 140);
		data.setValue("菠萝", 200);
		return data;
	}
	private static void resetPlot(PiePlot3D pieplot){
		String unitStyle = "{0}={1}({2})";
		
		pieplot.setNoDataMessage("没有对应的数据,请重新查询");
		pieplot.setNoDataMessageFont(new Font("华文行楷",Font.BOLD,21));
		pieplot.setNoDataMessagePaint(Color.BLUE);
		
//		pieplot.setToolTipGenerator(new StandardPieToolTipGenerator(
//										unitStyle,
//										NumberFormat.getNumberInstance(),
//										new DecimalFormat("0.00%"))
//									);
		
		//设置图例显示样式
		pieplot.setLabelGenerator(new StandardPieSectionLabelGenerator(
										unitStyle,
										NumberFormat.getNumberInstance(),
										new DecimalFormat("0.00%"))
								    );
		//设置引用标签显示样式
		pieplot.setLegendLabelGenerator(new StandardPieSectionLabelGenerator(
				   unitStyle,
				   NumberFormat.getNumberInstance(),
				   new DecimalFormat("0.00%")));
	}
	。。。。。。。

 

然后写三个Action,分别用于显示三种图例,它们的方法几乎相同。Action中都得定义一个JFreeChart,对象名字必须

为chart。

public class BarFreeChartAction extends ActionSupport {

	private JFreeChart chart;
	
	
	public JFreeChart getChart() {
		return chart;
	}


	public void setChart(JFreeChart chart) {
		this.chart = chart;
	}


	public String execute(){
		this.setChart(JFreeChartService.createBarChart());
		return SUCCESS;
	}
}

    最重要的就是struts.xml配置文件。

   

<package name="jfreechartPackage" extends="jfreechart-default" namespace="/">
		
	<!-- 柱状图 -->
	<action name="barFreeChartAction" class="aokunsang.action.BarFreeChartAction">
		<result name="success" type="chart">
			<param name="width">700</param>
			<param name="height">400</param>
		</result>
	</action>
	

 

    需要继承jfreechart-default.xml,可查看struts2-jfreechart-plugin-2.1.6.jar中org.apache.struts2.dispatcher包下面的struts-plugin.xml文件:

<struts>
    <package name="jfreechart-default" extends="struts-default">
    
    	<result-types>
    		<result-type name="chart" class="org.apache.struts2.dispatcher.ChartResult">
    			<param name="height">150</param>
    			<param name="width">200</param>
    		</result-type>
    	</result-types>
    </package>

</struts>

 

最后就是简单的jsp文件了:

<html>
  <head>
    <title>jfreechart的图例</title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="Content-Type" content="UTF-8">      
  <body>
  <center>饼状图和柱状图的效果呈现如下</center>
  饼状图(3D图):<br/>
  <img border="0" src="pieFreeChartAction.action"><p>&nbsp;</p>
  柱状图(3D图):<br/>
  <img border="0" src="barFreeChartAction.action"><p>&nbsp;</p>
  折线图(非3D图):<br/>
  <img border="0" src="lineFreeChartAction.action">
  </body>
</html>

 

 

成都市作为中国西部地区具有战略地位的核心都市,其人口的空间分布状况对于城市规划、社会经济发展及公共资源配置等研究具有基础性数据价值。本文聚焦于2019年度成都市人口分布的空间数据集,该数据以矢量格式存储,属于地理信息系统中常用的数据交换形式。以下将对数据集内容及其相关技术要点进行系统阐述。 Shapefile 是一种由 Esri 公司提出的开放型地理空间数据格式,用于记录点、线、面等几何要素。该格式通常由一组相互关联的文件构成,主要包括存储几何信息的 SHP 文件、记录属性信息的 DBF 文件、定义坐标系统的 PRJ 文件以及提供快速检索功能的 SHX 文件。 1. **DBF 文件**:该文件以 dBase 表格形式保存各地理要素相关联的属性信息,例如各区域的人口统计数值、行政区划名称及编码等。这类表格结构便于在各类 GIS 平台中进行查询编辑。 2. **PRJ 文件**:此文件明确了数据所采用的空间参考系统。本数据集基于 WGS84 地理坐标系,该坐标系在全球范围内广泛应用于定位空间分析,有助于实现跨区域数据的准确整合。 3. **SHP 文件**:该文件存储成都市各区(县)的几何边界,以多边形要素表示。每个多边形均配有唯一标识符,可属性表中的相应记录关联,实现空间数据统计数据的联结。 4. **SHX 文件**:作为形状索引文件,它提升了在大型数据集中定位特定几何对象的效率,支持快速读取显示。 基于上述数据,可开展以下几类空间分析: - **人口密度评估**:结合各区域面积对应人口数,计算并比较人口密度,识别高密度低密度区域。 - **空间集聚识别**:运用热点分析(如 Getis-Ord Gi* 统计)或聚类算法(如 DBSCAN),探测人口在空间上的聚集特征。 - **空间相关性检验**:通过莫兰指数等空间自相关方法,分析人口分布是否呈现显著的空间关联模式。 - **多要素叠加分析**:将人口分布数据地形、交通网络、环境指标等其他地理图层进行叠加,探究自然人文因素对人口布局的影响机制。 2019 年成都市人口空间数据集为深入解析城市人口格局、优化国土空间规划及完善公共服务体系提供了重要的数据基础。借助地理信息系统工具,可开展多尺度、多维度的定量分析,从而为城市管理学术研究提供科学依据。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值