`
远去的渡口
  • 浏览: 472857 次
  • 性别: Icon_minigender_2
  • 来自: 上海转北京
社区版块
存档分类
最新评论

JfreeChart 3D饼图总结

阅读更多

今天抽空,也总结了一下3D饼图的画法,这里大致先写个思路。

1、取得数据集所需数据源。3D饼图的数据集通常用DefaultPieDataset,下面将我的代码粘一下:

private static PieDataset createDataset(double[] datas, String foodfect,
			String bmr, String daily, String sport) {

		// String foodfect = "食物热效应";
		// String bmr = "基础代谢率";
		// String daily = "日常活动消耗的能量";
		// String sport = "额外运动消耗";

		double fectper = datas[3] / datas[1] * 100;
		double bmrper = datas[2] / datas[1] * 100;
		double dailper = datas[4] / datas[1] * 100;
		double sportper = datas[7] / datas[1] * 100;


		if (fectper >= 0 && bmrper >= 0 && dailper >= 0 && sportper >= 0) {

			fectper = Double.parseDouble(BarChartData
					.formAtCaloriepercent(fectper));
			bmrper = Double.parseDouble(BarChartData
					.formAtCaloriepercent(bmrper));
			dailper = Double.parseDouble(BarChartData
					.formAtCaloriepercent(dailper));
			sportper = Double.parseDouble(BarChartData
					.formAtCaloriepercent(sportper));
		}

		DefaultPieDataset pset = new DefaultPieDataset();
		pset.setValue(foodfect, -fectper);
		pset.setValue(bmr, -bmrper);
		pset.setValue(daily, -dailper);
		pset.setValue(sport, -sportper);

		return pset;
	}

 

2、调用画图API

/**
	 * 饼状图
	 * @param dataset
	 *            数据集
	 * @param chartTitle
	 *            图标题
	 * @param charName
	 *            生成图的名字
	 * @param pieKeys
	 *            分饼的名字集
	 * @return
	 */
	public static JFreeChart createValidityComparePimChar(PieDataset dataset,
			String chartTitle, String nodatamess) {

		JFreeChart chart = ChartFactory.createPieChart3D("Pie Chart 3D Demo 3",
				dataset, true, true, false);
		PiePlot3D plot = (PiePlot3D) chart.getPlot();
		plot.setStartAngle(290D);
		plot.setDirection(Rotation.CLOCKWISE);
		plot.setForegroundAlpha(0.5F);
		plot.setNoDataMessage("No data to display");
	
		// 使下说明标签字体清晰,去锯齿类似于的效果
		chart.getRenderingHints().put(RenderingHints.KEY_TEXT_ANTIALIASING,
				RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);
		// chart.setAntiAlias(false);
		// 图片背景色


		chart.setBackgroundPaint(Color.WHITE);
		// 设置图标题的字体重新设置title

		// 设置标题的颜色
		TextTitle text = new TextTitle(chartTitle);
		text.setPaint(new Color(102, 102, 102));
		chart.setTitle(text);

		plot.setBackgroundPaint(new Color(255, 253, 246));
		plot.setOutlineStroke(new BasicStroke(1.5f));
		plot.setMaximumLabelWidth(0.25d);
		// 图片中显示百分比:默认方式

		// 设置各色块的颜色
		plot.setSectionPaint(0, new Color(87, 149, 117));
		plot.setSectionPaint(1, new Color(234, 162, 40));
		plot.setSectionPaint(2, new Color(197, 180, 127));
		plot.setSectionPaint(3, new Color(75, 178, 197));
		plot.setSectionPaint(4, new Color(131, 149, 87));

		plot.setShadowXOffset(1.0d);
		plot.setIgnoreZeroValues(false);
		plot.setStartAngle(90); // 设置旋转角度
		plot.setDirection(Rotation.CLOCKWISE); // 设置旋转方向
		plot.setForegroundAlpha(0.5f);

		plot.setLabelLinkMargin(0.1);
		plot.setSectionOutlinesVisible(false);
		plot.setDepthFactor(0.1d);// 饼图的Z轴高度。


		// 设置无数据时的信息
		plot.setNoDataMessage(nodatamess);
		plot.setNoDataMessageFont(new Font("", Font.BOLD, 14));

		// 设置无数据时的信息显示颜色
		plot.setNoDataMessagePaint(new Color(87, 149, 117));

		// 图片中显示百分比:自定义方式,{0} 表示选项, {1} 表示数值, {2} 表示所占比例 ,小数点后两位
		plot.setLabelGenerator(new StandardPieSectionLabelGenerator(
				"{0} ={1}%", NumberFormat.getNumberInstance(),
				new DecimalFormat("0.00%")));
		// 图例显示百分比:自定义方式, {0} 表示选项, {1} 表示数值, {2} 表示所占比例


		plot.setLegendLabelGenerator(new StandardPieSectionLabelGenerator(
				"{0} ={1}%"));

		plot.setLabelFont(new Font("SansSerif", Font.TRUETYPE_FONT, 12));

		// 指定图片的透明度(0.0-1.0)
		plot.setForegroundAlpha(0.65f);
		

		return chart;

	}

 

3、生成Chart图,返回图片URL

public static void drawPieChart(IrisIoInterface io, Log log,
			double[] datas, String nodatamess, String foodfect, String bmr,
			String daily, String sport) {
		PieDataset dataset = createDataset(datas, foodfect, bmr, daily, sport);
		JFreeChart chart = createValidityComparePimChar(dataset, "", nodatamess);

		HttpServletRequest request = io.getRequest();
		String filename = "";
		String graphURL = "";
		try {
			filename = ServletUtilities.saveChartAsPNG(chart, 320, 177, null,
					io.getSession());
			graphURL = request.getContextPath() + "/displayChart?filename="
					+ filename;
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			log.error(e);
		}

		io.setData("filename1", filename, BeanShare.BEAN_SHARE_REQUEST);
		io.setData("pieurl", graphURL, BeanShare.BEAN_SHARE_REQUEST);

	}

 

现在就OK了,效果图:

 

分享到:
评论

相关推荐

    jfreechart 曲线图 3d饼图 3d柱状图

    **JFreeChart库详解:创建3D曲线图、3D饼图和3D柱状图** JFreeChart是一个强大的Java图形库,它提供了多种图表类型,包括曲线图、饼图和柱状图,且支持2D和3D效果。本篇文章将深入探讨如何使用JFreeChart来创建这些...

    java绘制图表(柱状图、饼图、折线图)包 jfreechart

    除了这些基本图表,JFreeChart还支持其他类型的图表,如散点图、面积图、3D图表等,为开发者提供了丰富的选择。 在使用JFreeChart时,常常会配合jxl库来处理Excel数据。jxl是一个Java API,用于读写Microsoft Excel...

    Ireport4.5.0制作3D饼图

    ### Ireport 4.5.0 制作3D饼图详解 在现代数据分析与展示领域,图表的应用极为广泛,特别是在企业管理层面,管理者们希望通过直观的图表形式来快速理解复杂的数据,以便于进行准确的决策。JasperReport作为一款优秀...

    JfreeChart柱状图饼图

    **JFreeChart——柱状图与饼图详解** 在Java编程中,JFreeChart库是一个强大的图表绘制工具,它能够帮助开发者创建出多种类型的图表,包括柱状图、饼图等,广泛应用于数据分析和可视化展示。这篇博文中,我们将深入...

    JFreeChart饼图、柱状图等

    JFreeChart提供了丰富的定制选项,比如设置标签的方向、颜色、字体,甚至可以添加3D效果。 其次,柱状图是一种常用的统计图表,用于比较不同类别的数据量。JFreeChart提供了垂直柱状图和水平柱状图,可以通过设置...

    JfreeChart 3D 绘图

    JFreeChart是开源的Java类库,它提供了丰富的图表类型,如折线图、柱状图、饼图、散点图、甘特图等。它不仅支持静态图表,还能够动态更新数据,使得图表具有交互性。JFreeChart库的灵活性和易用性使其成为Java开发者...

    springboot_Jfreechart.zip

    在springboot的web项目上,利用jfreeChart+java+thymeleaf(thymeleaf也可以换成jstl)制作折线图,柱形图,3d柱形图,多组柱形图,圆饼图,如果要演示到web项目和页面上去的可以下载看看

    jfreechart实现3d饼状图

    JFreeChart是一个强大的Java图表库,它允许开发者创建多种类型的2D和3D图表,包括柱状图、饼状图、线形图、散点图等。在这个特定的案例中,我们关注的是“3D饼状图”的实现,这是一种用以展示数据比例关系的可视化...

    JFreeChart生成3D饼状图及柱状图

    例如,要创建一个3D饼状图,我们可以调用`ChartFactory.create3DPieChart()`方法,需要提供图表的标题、数据源、是否显示百分比以及是否反转饼图的顺序等参数。数据源通常是一个`PieDataset`对象,它可以是`...

    jfreechart_生成折线图,饼图,柱状图,堆栈柱状图

    2. 创建 PiePlot3D 对象,用于设置饼图的样式。 3. 使用 ChartFactory 创建饼图,passing in the dataset object. 4. 使用 ChartUtilities 将图表保存到文件中。 三、柱状图 柱状图是一种常见的图表类型,用于显示...

    读取数据库的数据并整合成3D饼图在jsp中显示详解

    在本文中,我们将介绍如何在JSP(Java Server Pages)页面中读取数据库数据并将其整合成3D饼图进行显示。这一过程涉及到几个关键的步骤和知识点,包括数据库操作、使用JFreeChart库生成饼图、以及在Web应用中配置...

    第11章 Struts 2整合JFreeChart开发.ppt

    使用JFreeChart生成饼图,首先要创建一个Java程序,通过`ChartFactory.createPieChart()`方法,传入饼图的标题、数据集、是否显示图例、工具提示和详细信息标签等参数。例如: ```java JFreeChart chart = ...

    web页面报表分析之3D饼状图

    2. **3D饼状图的创建**:JFreeChart支持2D和3D饼图,3D效果增加了图表的视觉吸引力。你需要学习如何配置图表参数,如角度、深度,来实现三维效果。 3. **数据绑定**:将业务数据与图表关联,这通常涉及到数据结构的...

    JFreeChart-简明教程

    JFreeChart 是一个强大的 Java 图表库,用于生成各种类型的图表,包括饼图、柱状图、线图、区域图、分布图、混合图和甘特图等。它支持导出为 PNG 和 JPG 图片格式,使得在 Java 应用程序中集成数据可视化变得非常...

    jfreechart_demo.zip

    6. **其他高级特性**:JFreeChart还支持3D图表、组合图、热力图等多种图表类型,以及自定义轴标签、图例、背景色等。 在"jfreechart_demo.zip"中,你可能会找到如何设置数据源(如数组、列表或数据库查询结果)、...

    jfreechart-1.0.19

    JFreeChart支持饼图(2D和3D)、条形图(水平和垂直、规则和堆叠)、线图、散点图、时间序列图、高低开闭图、烛台图、甘特图、组合图、温度计、刻度盘等。JFreeChart可以用于客户端和服务器端应用程序。这个项目是由...

    jFreeChart学习总结

    ### JFreeChart学习总结 #### 一、为什么学习JFreeChart? 随着互联网技术的飞速发展,越来越多的应用程序转向了Web平台。这不仅包括传统的静态网页,也涵盖了那些需要复杂数据展示的应用,如报表系统。然而,从...

    JFreeChart生成报表Demo案例

    以下是一段简单的代码示例,展示了如何使用JFreeChart生成一个3D饼图: ```java import org.jfree.chart.ChartFactory; import org.jfree.chart.JFreeChart; import org.jfree.data.general.DefaultPieDataset; ...

Global site tag (gtag.js) - Google Analytics