JFreeChart - BarChartTest.java

原创 2006年05月17日 13:15:00
import java.awt.Color;
import java.awt.Dimension;
import javax.swing.JPanel;
import org.jfree.chart.*;
import org.jfree.chart.axis.AxisLocation;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.general.DatasetUtilities;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
import org.jfree.chart.labels.StandardCategoryLabelGenerator;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.CategoryLabelPositions;
import org.jfree.chart.labels.ItemLabelPosition;
import org.jfree.chart.labels.ItemLabelAnchor;
import org.jfree.ui.TextAnchor;
/**
 * <p>Title: </p>
 *
 * <p>Description: </p>
 *
 * <p>Copyright: Copyright (c) 2005</p>
 *
 * <p>Company: </p>
 *
 * @author not attributable
 * @version 1.0
 */
public class BarChartTest extends ApplicationFrame {
  static class LabelGenerator extends StandardCategoryLabelGenerator {
    public String generateItemLabel(CategoryDataset categorydataset, int i, int j) {
      return categorydataset.getRowKey(i).toString();
      //return "";
    }
    LabelGenerator() {
    }
  }

  public BarChartTest(String s) {
    super(s);
    CategoryDataset categoryDataset = createDataset();
    JFreeChart freeChart = createChart(categoryDataset);
    ChartPanel chartPanel = new ChartPanel(freeChart);
    chartPanel.setPreferredSize(new Dimension(640, 350));
    setContentPane(chartPanel);
  }
  private static CategoryDataset createDataset() {
    //图中显示的数据
    double data[][] = { {20D, 20D, 25D, 30D}, {25D, 30D, 35D, 40D} };
    String type[] = {"投诉人数", "投诉量"};
    String type2[] = {"8210", "7210", "6210", "3120"};
    return DatasetUtilities.createCategoryDataset(type, type2, data);
    //return DatasetUtilities.createCategoryDataset("投诉量", "8210", data);
  }
  private static JFreeChart createChart(CategoryDataset categoryDataset) {
    JFreeChart freeChart = ChartFactory.createBarChart("Nokia投诉统计", "型号",
      "", categoryDataset, PlotOrientation.HORIZONTAL, true, true, false);
    //JFreeChart freeChart = ChartFactory.createBarChart("Nokia投诉统计", "型号", "条(单位)", categoryDataset, PlotOrientation.HORIZONTAL, true, true, false);
    freeChart.setBackgroundPaint(Color.white);
    freeChart.setBorderVisible(true);
    Legend legend = freeChart.getLegend();
    legend.setAnchor(Legend.EAST);
    CategoryPlot categoryPlot = freeChart.getCategoryPlot();
    categoryPlot.setBackgroundPaint(Color.lightGray);
    categoryPlot.setRangeGridlinePaint(Color.black);
    //categoryPlot.setRangeGridlinePaint(Color.white);
    categoryPlot.setRangeAxisLocation(AxisLocation.TOP_OR_LEFT);
    //categoryPlot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_LEFT);
    NumberAxis numberAxis = (NumberAxis) categoryPlot.getRangeAxis();
    numberAxis.setRange(0.0D, 100D);
    numberAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
    //numberAxis.setAutoTickIndex(5);
    BarRenderer barRenderer = (BarRenderer) categoryPlot.getRenderer();
    //设置每一项的数值可见
    barRenderer.setDrawBarOutline(false);
    barRenderer.setItemLabelsVisible(true);
    barRenderer.setLabelGenerator(new LabelGenerator());
    barRenderer.setSeriesPaint(0, new java.awt.Color(0xFCB90A));
    barRenderer.setSeriesPaint(1, new java.awt.Color(0x00D5E7));
    //设置每组数据中每一项中间的间隔
    barRenderer.setItemMargin(0.00000000000000001D);
    //设置每一项的数值显示的位置
    //ItemLabelPosition itemlabelposition = new ItemLabelPosition(ItemLabelAnchor.INSIDE12, TextAnchor.CENTER_RIGHT, TextAnchor.CENTER_RIGHT, -1.5707963267948966D);
    //barRenderer.setPositiveItemLabelPosition(itemlabelposition);
    //ItemLabelPosition itemlabelposition1 = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.CENTER_LEFT, TextAnchor.CENTER_LEFT, -1.5707963267948966D);
    //barRenderer.setPositiveItemLabelPositionFallback(itemlabelposition1);
    //设置 种类标签的 显示倾斜角度
    CategoryAxis categoryaxis = categoryPlot.getDomainAxis();
    categoryaxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);
    return freeChart;
  }
  public static void main(String[] args) {
    BarChartTest barChartTest = new BarChartTest("BarChartTest");
    barChartTest.pack();
    RefineryUtilities.centerFrameOnScreen(barChartTest);
    barChartTest.setVisible(true);
  }
}

Java报表之JFreeChart-第一讲

1. jfreechar简介 JFreeChart是JAVA平台上的一个开放的图表绘制类库。它完全使用JAVA语言编写,是为applications, applets, servlets 以及JSP等...

java图表-使用JfreeChart画散点图

Java使用JFreeChart画散点图

(附代码)JAVA用POI从Excel读取数据进行相关统计,JFreeChart绘制图表

代码大概三百行吧,不多。本来连接数据库做是个不错的选择,但是我刚刷了系统木有了又懒得装,从txt输入又感觉太low,最后就作死选择了以前从未尝试过的从Excel输入,并碰到了各种问题_(:зゝ∠)_比...

Java 学习笔记之jfreechart 生成折线图,饼图, ...

package com.yyh.jfreechart; import java.awt.Color; import java.awt.Font; import java.io.File; impor...
  • SJF0115
  • SJF0115
  • 2011年12月10日 12:54
  • 10973

Java学习笔记 制作图表过程(Eclipse+JFreeChart)

JFreeChart是开放源代码站点SourceForge.net上的一个JAVA项目,它主要用来生成各种各样的图表,这些图表包括:饼图、柱状图(普 通柱状图以及堆栈柱状图)、线图、区域图、分布图、混...
  • SJF0115
  • SJF0115
  • 2011年12月10日 12:51
  • 7359

Java学习笔记之JFreeChart详解

JFreeChart是sourceforge 一个Java开源项目,是一个优秀的Java图表生成插件,它提供了在Java应用程序, Servlet和Jsp下生成各种图片格式的图表,包括柱形图,饼...
  • SJF0115
  • SJF0115
  • 2011年12月10日 13:37
  • 1672

JFreeChart基于Java Web的报表组件的使用以及解决乱码

JFreeChart的简介在此就不赘述,主要讲解如何使用JFreeChart创建各种图表,这些图表包括:饼图、柱状图 ( 普通柱状图以及堆栈柱状图 )、线图、区域图、分布图、混合图、甘特图以及一些仪表...

Java语言用jfreechart绘制柱状图、饼状图和时序图

1.柱状图: public void test1() {   try   {    //设置字体    StandardChartTheme sct = new StandardChartTheme(...

Java报表之JFreeChart-第二讲

1.   CategoryDataset分类数据引入 第一步:导入jfreeChart的jar包 第二步:在web.xml配置jfreechart JFreeChartDem...

Java学习笔记之jfreeChart 柱状图

package com.mengya.test.jfreechart; import java.awt.Font; import javax.swing.JPanel; import org.j...
  • SJF0115
  • SJF0115
  • 2011年12月10日 12:56
  • 2017
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JFreeChart - BarChartTest.java
举报原因:
原因补充:

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