package com.hoocy.struts;
import java.awt.Color;
import java.awt.Font;
import java.awt.RenderingHints;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.labels.StandardPieSectionLabelGenerator;
import org.jfree.chart.plot.PiePlot;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.general.DefaultPieDataset;
public class TestPieChart {
/**
* 创建饼图对象的JFreeChart 对象
*
* @param condVo
* @param list
* @return
* @throws Exception
*/
public static void createPieChart() throws Exception {
JFreeChart[] jfreechart = new JFreeChart[2];
// 饼图的标题
String ChartTitle = "";
// 用工厂类创建饼图
JFreeChart pieChart = ChartFactory.createPieChart(ChartTitle,
createPieDataset(), true, true, false);
// RenderingHints做文字渲染参数的修改
// VALUE_TEXT_ANTIALIAS_OFF表示将文字的抗锯齿关闭.
pieChart.getRenderingHints().put(RenderingHints.KEY_TEXT_ANTIALIASING,
RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);
// 设置Legend的位置 图例的位置
// ((JFreeChart) pieChart).getLegend().setPosition(RectangleEdge.RIGHT);
// 设置图片背景色
pieChart.setBackgroundPaint(new Color(191, 191, 255));
// 设置图标题的字体重新设置title
Font font = new Font("隶书", Font.BOLD, 25);
TextTitle title = new TextTitle(ChartTitle);
title.setFont(font);
// pieChart.setTitle(title); //用来控制Chart标题的
// 得到饼图的Plot对象
PiePlot piePlot = (PiePlot) pieChart.getPlot();
// 指定饼图轮廓线的颜色
piePlot.setBaseSectionOutlinePaint(Color.BLACK);
piePlot.setBaseSectionPaint(Color.BLACK);
// 设置背景区域背景色
piePlot.setBackgroundPaint(new Color(191, 191, 255));
setSection(piePlot);
setLabel(piePlot);
// 设置没数据显示信息
setNoDataMessage(piePlot);
// 设置对于null数据和0数据的处理
setNullAndZeroValue(piePlot);
jfreechart[0] = pieChart;
ChartFrame frame = new ChartFrame("TestPieChart", pieChart);
frame.pack();
frame.setVisible(true);
}
/**
* 创建饼图对象的数据源 DefaultPieDataset
*
* @param condVo
* @param list
* @param parse
* @return
* @throws UnsupportedEncodingException
* @throws Exception
*/
public static DefaultPieDataset createPieDataset()
throws UnsupportedEncodingException, Exception {
DefaultPieDataset pieDataset = new DefaultPieDataset();
String[] TypeName = { "java", "c++", "vb", "sheel", "ruby" };
for (int i = 0; i < TypeName.length - 2; i++) {
pieDataset.setValue(TypeName[i].toString(), 0);
}
pieDataset.setValue("sheel", 0);
pieDataset.setValue("ruby", null);
// pieDataset.
return pieDataset;
}
/**
* plot对象设置的方法,提供配置饼图扇区颜色的方法
*
* @param pieplot
*/
@SuppressWarnings("deprecation")
public static void setSection(PiePlot pieplot) {
// 扇区颜色设置
pieplot.setSectionPaint(0, new Color(153, 153, 255));
pieplot.setSectionPaint(1, new Color(153, 53, 102));
pieplot.setSectionPaint(2, new Color(255, 255, 204));
pieplot.setSectionPaint(3, new Color(204, 255, 255));
pieplot.setSectionPaint(4, new Color(102, 0, 102));// 紫色
pieplot.setSectionPaint(5, new Color(255, 128, 128));// 桃红
pieplot.setSectionPaint(6, new Color(0, 102, 204));// 蓝
pieplot.setSectionPaint(7, new Color(204, 204, 255));
// 设置扇区分离显示
// pieplot.setExplodePercent("测试数据1", 0.2D);
// 设置扇区边框不可见
// pieplot.setSectionOutlinesVisible(false);
}
/**
* 设置扇区标题格式的方法类
*
* @param pieplot
*/
public static void setLabel(PiePlot pieplot) {
// 设置扇区标签显示格式:关键字:值(百分比)
// pieplot.setLabelGenerator(new StandardPieSectionLabelGenerator(
// "{0}:{1}({2} percent)"));
pieplot.setLabelGenerator(new StandardPieSectionLabelGenerator(
"{0} {2}", NumberFormat.getNumberInstance(), new DecimalFormat(
"0.00%")));
// 设置扇区标签颜色
pieplot.setLabelBackgroundPaint(new Color(220, 220, 220));
pieplot.setLabelFont((new Font("宋体", Font.PLAIN, 15)));// 设置扇区标签字体大小
}
/**
* 设置饼图对象没数据时所显示内容和字体
*
* @param pieplot
*/
public static void setNoDataMessage(PiePlot pieplot) {
// 设置没有数据时显示的信息
pieplot.setNoDataMessage("无数据");
// 设置没有数据时显示的信息的字体
pieplot.setNoDataMessageFont(new Font("宋体", Font.ITALIC, 20));
// 设置没有数据时显示的信息的颜色
pieplot.setNoDataMessagePaint(Color.orange);
}
/**
* 设置饼图对象数据是否忽略0和null值
*
* @param piePlot
*/
public static void setNullAndZeroValue(PiePlot piePlot) {
// 设置是否忽略0和null值
// piePlot.setIgnoreNullValues(false);
// piePlot.setIgnoreZeroValues(false);
}
public static void main(String[] args) throws IOException, Exception {
createPieChart();
}
}
分享到:
相关推荐
【标题】:“折线图、柱状图、饼图1” 【描述】:“涉及柱状图的多种形式,包括普通柱状图、竖直方向堆积的柱子、并排排列的柱子,以及如何给柱体加标注” 【标签】:“软件/插件 matplotlib” 在数据分析和可视化...
name: '饼图1', type: 'pie', radius: '50%', // 设置饼图半径,可以相对于容器宽度或高度 center: ['25%', '50%'], // 设置饼图中心位置 data: [ { value: 335, name: '类别1' }, { value: 310, name: '类别...
图表效果及代码实现讲解链接:https://blog.csdn.net/zhangjiujiu/article/details/143264319
虽然jQuery本身不直接支持饼图绘制,但可以与第三方库(如Chart.js或Morris.js)结合,实现动态交互的饼图。例如,使用jQuery与Chart.js创建饼图: 1. 引入库:引入jQuery和Chart.js的库文件。 2. HTML结构:创建一...
在数据分析和可视化领域,饼图是一种非常常见的图表类型,它用于表示数据的组成部分以及各部分所占的比例。在ASP.NET中,我们可以利用各种库来创建2D和3D饼图,以便更直观地理解数据分布。这篇内容将深入探讨如何在...
饼图饼图饼图饼图饼图饼图饼图饼图饼图饼图饼图饼图饼图饼图饼图饼图饼图饼图饼图饼图饼图饼图饼图饼图饼图饼图饼图饼图饼图饼图饼图饼图饼图饼图饼图饼图饼图饼图饼图饼图饼图饼图饼图饼图饼图饼图饼图饼图饼图饼图...
1. 数据准备:确定要展示的数据项和对应的值,这些值将决定饼图中各个扇区的大小。 2. 库选择:VC++中有多种库可以用于生成饼图,如MFC(Microsoft Foundation Classes)、ATL(Active Template Library)或直接使用...
1. 数据准备:收集并整理要展示的数据,确保数据包含内外两层饼图所需的类别和相应值。 2. 创建SVG元素:在HTML页面中创建SVG元素,作为绘制饼图的画布。 3. 计算角度:根据数据值计算每一块饼图的起始角度和结束...
1. `series`:定义饼图的系列,每个系列代表一个饼图,可以设置 `type` 为 `'pie'` 或 `'pie3D'` 来创建 3D 饼图。 2. `data`:在 `series` 内,定义每个扇区的数据,每个元素是一个对象,包含值(`value`)和名称...
1. **绘制基础图形**:饼图由多个扇形区域组成,因此我们需要用到`Canvas`的`drawArc()`方法来绘制每个扇形。这个方法需要指定圆心、半径、起始角度和扫过角度。角度的计算基于360度,其中0度对应于正上方,顺时针为...
1. 数据绑定:WPF的强大之处在于其数据绑定机制,允许我们将数据模型与视图直接关联。在饼图中,我们需要将数据项(如各部分的值和标签)绑定到图形元素,以便动态更新图表。 2. 计算角度:每个扇形的角度取决于其...
饼图和柱状图是数据可视化中常用的图表类型,它们能有效地帮助我们理解和解释数据分布。下面将详细探讨这两种图表的特性和应用。 饼图是一种圆形图表,将数据分割成多个扇形区域,每个区域的大小代表相应数据的占比...
1. `dataProvider`:饼图的数据源,通常为ArrayCollection,其中每个对象包含`label`(分类标签)和`value`(数值)属性。 2. `showDataLabels`:设置是否显示数据标签。 3. `dataTipFunction`:自定义数据提示函数...
1. **C#**:C#是微软公司开发的一种面向对象的编程语言,广泛应用于Windows桌面应用、Web应用、游戏开发以及移动应用等领域。它的语法简洁明了,支持多种编程范式,包括面向对象、面向组件和函数式编程。 2. **数据...
1. **创建饼图**:在LabVIEW中,你可以使用“创建饼图”函数来初始化一个饼图控件。这个函数需要输入数据数组,其中每个元素代表一个扇区的大小,以及可能的颜色数组,对应每个扇区的颜色。如果未提供颜色数组,...
1. 数据绑定:将数据集映射到饼图的各个扇区,每个扇区代表数据集的一个元素。 2. 角度计算:根据数据值计算每个扇区的角度,以确保它们的比例正确。 3. 3D变换:应用透视和旋转效果,让饼图看起来像是3D的。 4. ...
data: ['类别1', '类别2', '类别3'] // 饼图的类别标签 }, series: [ { name: '访问来源', type: 'pie', radius: '55%', // 饼图半径 center: ['50%', '60%'], // 饼图中心位置 data: [ {value: 335, name...
Highcharts是一款强大的JavaScript图表库,用于在Web上创建各种数据可视化图表,如柱状图、折线图、饼图等。在这个"highcharts简单的饼图demo"中,我们将深入探讨如何利用Highcharts来构建一个基本的饼图,并根据...
1. 添加组件:在Flash CS4的工作区中,可以通过“组件”面板来添加饼图组件。点击“组件”面板,然后在“数据”类别下找到饼图,将其拖放到舞台上。 2. 数据源设置:饼图组件需要数据源才能生成图形。你可以直接在...
本主题聚焦于使用C#编程语言实现的百分比饼图,这是一种常见且直观的图表类型,常用于显示各部分占整体的比例。C#提供了多种方法来创建这种图表,包括但不限于使用.NET框架的System.Windows.Forms.DataVisualization...