JFreeChart - PieChartTest.java

原创 2006年05月17日 13:13:00

import java.awt.Dimension;
import javax.swing.JPanel;
import org.jfree.chart.*;
import org.jfree.chart.plot.PiePlot3D;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.general.PieDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
import org.jfree.util.Rotation;
import org.jfree.chart.labels.PieToolTipGenerator;
import org.jfree.chart.labels.StandardPieItemLabelGenerator;
import org.jfree.chart.labels.PieSectionLabelGenerator;
import java.awt.Insets;
import rewin.tools.reportStat.PiePlot3DCustom;
import rewin.tools.reportStat.CustomLegend;

public class PieChartTest extends ApplicationFrame {
  public PieChartTest(String s) {
    super(s);
    PieDataset pieDataset = createDataset();
    JFreeChart freeChart = createChart(pieDataset);
    ChartPanel chartPanel = new ChartPanel(freeChart);
    chartPanel.setPreferredSize(new Dimension(180, 120));
    setContentPane(chartPanel);
  }

  private static PieDataset createDataset() {
    DefaultPieDataset dataset = new DefaultPieDataset();
    System.out.println("dataset.getItemCount() = " + dataset.getItemCount());
    //dataset.setValue("Nokia", new Double(40));
    //System.out.println("dataset.getItemCount() = " + dataset.getItemCount());
    dataset.setValue("Moto", new Double(30));
    dataset.setValue("三星", new Double(20));
    dataset.setValue("西门子", new Double(10));
    dataset.setValue("波导", new Double(5));
    dataset.setValue("联想", new Double(5));
    dataset.setValue("其他", new Double(5));
    //dataset.setValue("无投诉", new Double(1));
    System.out.println("dataset.getItemCount() = " + dataset.getItemCount());
    return dataset;
  }

  private static JFreeChart createChart(PieDataset pieDataset) {
    //JFreeChart freeChart = ChartFactory.createPieChart3D("手机黑榜", pieDataset, true, false, false);
    //JFreeChart freeChart = ChartFactory.createPieChart3D("", pieDataset, true, false, false);

    PiePlot3DCustom piePlot3D = new PiePlot3DCustom(pieDataset);
    int index = pieDataset.getIndex("无投诉");
    System.out.println("index = " + index);
    System.out.println(pieDataset.getKey(0));

    piePlot3D.setInsets(new Insets(0, 0, 0, 0));
    //piePlot3D.setSectionPaint(0, new java.awt.Color(0x88EEFA));
    piePlot3D.setSectionPaint(0, new java.awt.Color(0x56D0F5));
    //piePlot3D.setSectionPaint(1, new java.awt.Color(0xBEEC56));
    piePlot3D.setSectionPaint(1, new java.awt.Color(0x51E050));
    //piePlot3D.setSectionPaint(2, new java.awt.Color(0xFACBDB));
    piePlot3D.setSectionPaint(2, new java.awt.Color(0xE6315C));
    //piePlot3D.setSectionPaint(3, new java.awt.Color(0xFEF29E));
    piePlot3D.setSectionPaint(3, new java.awt.Color(0xFCC938));
    //piePlot3D.setSectionPaint(4, new java.awt.Color(0xFD9BF0));
    piePlot3D.setSectionPaint(4, new java.awt.Color(0xED36C2));
    //piePlot3D.setSectionPaint(5, java.awt.Color.orange);
    //piePlot3D.setSectionPaint(6, java.awt.Color.magenta);
    //piePlot3D.setSectionPaint(7, java.awt.Color.black);
    //piePlot3D.setSectionPaint(8, java.awt.Color.lightGray);
    //piePlot3D.setSectionPaint(9, java.awt.Color.red);
    //piePlot3D.setOutlinePaint(java.awt.Color.white);
    if (pieDataset.getItemCount() == 1 && pieDataset.getIndex("无投诉") >= 0) {
      piePlot3D.setSectionPaint(0, java.awt.Color.red);
    }

    piePlot3D.setStartAngle(60D);
    piePlot3D.setDirection(Rotation.CLOCKWISE);
    piePlot3D.setForegroundAlpha(0.8F);
    piePlot3D.setNoDataMessage("No data to display");
    piePlot3D.setLabelGenerator(new CustomLabelGenerator());
    piePlot3D.setBackgroundAlpha(0f);//设置背景透明
    piePlot3D.setOutlinePaint(java.awt.Color.white);//设置边框为白色
    JFreeChart freeChart = new JFreeChart("", JFreeChart.DEFAULT_TITLE_FONT, piePlot3D, true);

    freeChart.setBackgroundPaint(java.awt.Color.white);
    freeChart.setBorderVisible(false);//是否显示边框

    CustomLegend legend = new CustomLegend();
    legend.setAnchor(Legend.EAST);
    legend.setOutlinePaint(java.awt.Color.white);//设置边框为白色
    freeChart.setLegend(legend);
    //Legend legend = freeChart.getLegend();
    //StandardLegend legend = (StandardLegend) freeChart.getLegend();
    //legend.setAnchor(Legend.EAST);
    //legend.setOutlinePaint(java.awt.Color.white);

    return freeChart;
  }

  public static void main(String[] args) {
    String str = "#E6315C";
    String s = str.substring(1);
    System.out.println(s);
    int color = Integer.parseInt(s, 16);
    System.out.println(color);
    PieChartTest pieChartTest = new PieChartTest("PieChartTest");
    pieChartTest.pack();
    RefineryUtilities.centerFrameOnScreen(pieChartTest);
    pieChartTest.setVisible(true);
  }

  static class CustomLabelGenerator implements PieSectionLabelGenerator {

    public String generateSectionLabel(PieDataset piedataset, Comparable comparable) {
      return null;
    }

    CustomLabelGenerator() {
    }
  }

}

JFreeChart样式设置

JFreeChart类: void setAntiAlias(boolean flag)    字体模糊边界 void setBackgroundImage(Image image)   背景图片...
  • poyuan97
  • poyuan97
  • 2017年04月18日 17:33
  • 590

jfreechart设置字体

jfreechart设置字体 有中文的背景下,如果不设置字体,将会乱码。 分为柱状,饼状,曲线图。 分别为: 柱状: TextTitle textTitle = chart.getT...
  • guoxu775
  • guoxu775
  • 2012年10月08日 15:34
  • 3193

JFreeChart画图示例

package com.zhou.email; import java.awt.Color; import java.awt.Font; import java.io.File; import ja...
  • zjt1388
  • zjt1388
  • 2015年07月14日 17:17
  • 343

JFreeChart使用总结(四)

JFreeChart使用总结 1. JFreeChart简介 JFreeChart是开放源代码站点SourceForge.net上的一个JAVA项目,它主要用来各种各样的图表,这些图表包括:饼图、柱状...
  • lvyuan30276
  • lvyuan30276
  • 2016年12月13日 18:41
  • 2184

JFreeChart详解——各类的简单介绍(一)

好多项目中都有JFreeChart 的使用,查阅资料和结合实际使用这里做一个总结,和详解。 简单介绍: JFreeChart是一个免费创建图片的java工具. 目前是最好的 java 图形解决方案,基...
  • sinat_38259539
  • sinat_38259539
  • 2017年06月16日 13:58
  • 222

jfreechart中文乱码解决方案

柱状图(CategoryPlot):    CategoryPlot plot=chart.getCategoryPlot();//获取图表区域对象   CategoryAxis domainAxis...
  • wanghuailong
  • wanghuailong
  • 2009年03月11日 12:46
  • 3452

JFreeChart的下载和安装与使用

 Java Web 2.0架构开发与项目实战购书网http://product.dangdang.com/product.aspx?product_id=20697597JFreeChart的下载地址...
  • tfnew21
  • tfnew21
  • 2009年10月26日 16:32
  • 6529

开源和收费图表工具对比:JFreeChart vs ChartDirector

今天跟大家分享一下JFreeChart和ChartDirector的对比分析,这两个都是web图表开发工具,前者是开源的,后者是不开源的收费控件。 JFreeChart是 Java平台下开源的的图表...
  • dyllove98
  • dyllove98
  • 2013年03月21日 16:06
  • 3392

jfreechart详解一饼形图

package com.xlk.jfreechart; import java.awt.Color; import java.awt.Dimension; import java.awt....
  • yangwangxlk
  • yangwangxlk
  • 2015年03月31日 11:44
  • 3275

JFreeChart笔记 (七) 时间序列图:值标记线

在一些比如说产量、销售额等的图表中常常会涉及到一个预期值或者目标值,这种值标记线如何在图表中画出来呢?这一节将教给大家值标记线的画法。 先看效果图: 实现代码如下,...
  • idwtwt
  • idwtwt
  • 2014年09月19日 10:29
  • 1291
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JFreeChart - PieChartTest.java
举报原因:
原因补充:

(最多只允许输入30个字)