通过JFreeChart的饼状图显示XML

<chart>
<set label="Paper Cost" value="25" />
<set label="Binding" value="20" />
<set label="Printing Cost" value="20" />
<set label="Royality" value="15" />
<set label="Transportation Cost" value="10" />
<set label="Promotion Cost" value="10" />
</chart>

代码如下

package com.oracle.bingTu;

import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Polygon;
import java.awt.Shape;
import java.awt.geom.Rectangle2D;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.DefaultDrawingSupplier;
import org.jfree.chart.plot.DrawingSupplier;
import org.jfree.chart.plot.PiePlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.LineAndShapeRenderer;
import org.jfree.chart.title.LegendTitle;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;

public class Test {

	private static List<String> lable1 = new ArrayList<String>();
	private static List<Integer> value1 = new ArrayList<Integer>();

	/**
	 * 读XML文件
	 */
	public static void readXML() {
		SAXReader saxReader = new SAXReader();
		try {
			Document doc = saxReader.read(new File("321.xml"));
			Element element = doc.getRootElement();
			List list = element.elements();
			for (int i = 0; i < list.size(); i++) {
				Element elementz = (Element) list.get(i);
				List list1 = elementz.elements();
				if (elementz.getName().equals("set")) {
						lable1.add(elementz.attributeValue("label"));
						value1.add(Integer.parseInt(elementz
								.attributeValue("value")));
				}
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		for(int i = 0 ;i<lable1.size();i++){
			System.out.println(lable1.get(i)+" "+value1.get(i));
		}
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Test.readXML();
		DefaultPieDataset dpd = new DefaultPieDataset(); // 建立一个默认的饼图
		for(int i = 0 ;i<lable1.size();i++){
			dpd.setValue(lable1.get(i), value1.get(i));
		}

		JFreeChart chart = ChartFactory.createPieChart("某公司人员组织数据图", dpd, true,
				true, false);
		// 可以查具体的API文档,第一个参数是标题,第二个参数是一个数据集,第三个参数表示是否显示Legend,第四个参数表示是否显示提示,第五个参数表示图中是否存在URL

		Font titleFont = new Font("黑体", Font.BOLD, 20);
		TextTitle textTitle = chart.getTitle();
		textTitle.setFont(titleFont);// 为标题设置上字体

		Font plotFont = new Font("宋体", Font.PLAIN, 16);
		PiePlot plot = (PiePlot) chart.getPlot();
		plot.setLabelFont(plotFont); // 为饼图元素设置上字体

		Font LegendFont = new Font("楷体", Font.PLAIN, 18);
		LegendTitle legend = chart.getLegend(0);
		legend.setItemFont(LegendFont);// 为图例说明设置字体

		ChartFrame chartFrame = new ChartFrame("某公司人员组织数据图", chart);
		// chart要放在Java容器组件中,ChartFrame继承自java的Jframe类。该第一个参数的数据是放在窗口左上角的,不是正中间的标题。
		chartFrame.pack(); // 以合适的大小展现图形
		chartFrame.setVisible(true);// 图形是否可见
	}

}

时间: 2024-10-31 17:34:08

通过JFreeChart的饼状图显示XML的相关文章

AngularJS in Action读书笔记5(实战篇)——在directive中引入D3饼状图显示

前言: "宁肯像种子一样等待  也不愿像疲惫的陀螺  旋转得那样勉强" 这是前几天在查资料无意间看到的一位园友的签名,看完后又读了两遍,觉得很有味道.后来一寻根究底才知这是出资大诗人汪国真之口,出处<她>.且抛开上下文,单从这短短几句,正恰如其分的折射出有一群人,他们穿着不那么fashion,言辞不那么犀利,但是内心某一块地方像是躁动的火山,拥有无尽的动力和激情,矢志不渝种子般投身到技术研究和心得分享当中. 或许每一次的生长都是那么悄无声息,但是无数次的坚持只是为了破土那日

转:C# 中 MSCHART 饼状图显示百分比

转自:http://blog.sina.com.cn/s/blog_51beaf0e0100yffo.html 1)显示百分比 Chart1.Series["Series1"].Label = "#PERCENT{P2}" 2)解决百分比设定后,legend的显示也为百分比的问题 首先确保你已经在设计器里将Chart设置为饼图形式 在chart的属性,打开legends集合,如果还没有legend成员添加一个,添加legend成员后,在其右边 打开    cellC

FusionChart实现柱状图、饼状图的动态数据显示 附Demo

最近做的项目中需要用饼状图显示——'问卷调查'的统计结果(之前用过FusionChart做过柱状图的数据展示,那还是两年前的事了),在网上查了下FusionChart实现饼状图显示方面的资料,却发现资料都比较零散.不完整,或者说没有简洁明了的说清楚其用法,到FusionChart官网上去看,无奈是英文的,而且Deom项目太大,没有耐心去看,最后还是将以前的项目找出来,摸索着弄了下搞定,现将FusionChart实现柱状图.饼状图的动态数据显示的方法和经验写出来,希望对做web开发需要的朋友能有所

使用JS charts来画图表(二)——饼状图

如上是一个饼状图: 代码如下: <html> <head> <title>部门管理</title> <script type="text/javascript" src="codebase/jscharts.js"></script> </head> <body> <div id="graph">Loading graph...</d

柱形图,饼状图JavaScript

<script type="text/javascript">    $(function () {    $('#container_2').highcharts({        chart: {        //type指定柱状图显示            type: 'column',                  },               title: {        //柱状图标题            text: ''        },   

Matplotlib基本图形之饼状图

Matplotlib基本图形之饼状图 饼状图特点: 饼状图显示一个数据系列中各项大小与各项总和的比例饼状图的数据点显示为整个饼状图的百分比 示例代码 import os import time import numpy as np import matplotlib.pyplot as plt basedir = os.path.dirname(os.path.abspath(__file__)) resultdir = os.path.join(basedir, 'result') class

JFreeChart框架中生成饼状图上怎样显示数据 [问题点数:40分,结帖人GreenLawn]

我用JFreeChart框架生成饼状图,但想把数据信息在饼图上显示,是在饼图内部(即圆内)显示!怎样实现啊?? 去掉lablepieplot.setLabelGenerator(null);去掉线pieplot.setLabelLinksVisible(false); 饼图标签显示百分比方法PiePlot pp = (PiePlot)chart.getPlot();pp.setLabelGenerator(new StandardPieSectionLabelGenerator("{2}&quo

JFreeChart在Struts2中实现3D饼状图统计

在Struts2中,用JFreeChart实现3D饼状图统计 前段时间学习了一下JFreeChart,现在来整理一下自己所作的实例. 下面分别用两种方式来实现: 一种是以java应用程序的方式,一种是以web项目程序的方式 需要加入的jar包有:  jcommon-1.0.17.jar . jfreechart-1.0.14.jar(前两个是JFreeChart中所带的,在下载的JFreeChart的lib目录下) . struts2-jfreechart-plugin-2.3.16.3.jar

JfreeChart在EXCEL中生成饼状图/柱状图/折线图

Maven <dependency> <groupId>jfree</groupId> <artifactId>jfreechart</artifactId> <version>1.0.13</version> </dependency> Java import org.apache.poi.ss.usermodel.Drawing; import org.apache.poi.ss.usermodel.She