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);
  }
}

JFreeChart样式设置

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

JFreeChart设置

// 坐标轴是否可见 void setVisible(boolean flag) // 坐标轴线条颜色(3D轴无效) void setAxisLinePaint(Paint paint) // 坐...
  • bedisdover
  • bedisdover
  • 2016年09月04日 10:15
  • 446

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
  • 341

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

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

jfreechart中文乱码解决方案

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

jfreechart设置字体

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

JFreeChart数据库接口

业务数据 考虑到我们有如下的 MySQL 表 mobile_tbl(mobile_brand VARCHAR(100)NOT NULL,unit_sale INT NO ...
  • u013510614
  • u013510614
  • 2016年01月02日 10:06
  • 684

JFreeChart简单介绍及用法(入门)

1.jfreechart简单介绍以及jar包下载首先了解JFreeChart是什么,它是JAVA平台上的一个开源报表系统(开放的图表绘制类库),通过它可以生成柱状图,饼状图,散点图,折线图等多种图形。...
  • Bazingaea
  • Bazingaea
  • 2016年02月15日 15:14
  • 3086

jfreeChart圆柱状图详细设置

圆形柱状图,直接看代码(有详细注释) BarChart3DCase.java package com.graph.myself; import java.awt.BasicStroke; impor...
  • dreamslink2010
  • dreamslink2010
  • 2011年11月12日 15:25
  • 1368

JFreeChart使用总结(四)

JFreeChart使用总结 1. JFreeChart简介 JFreeChart是开放源代码站点SourceForge.net上的一个JAVA项目,它主要用来各种各样的图表,这些图表包括:饼图、柱状...
  • lvyuan30276
  • lvyuan30276
  • 2016年12月13日 18:41
  • 2076
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JFreeChart - BarChartTest.java
举报原因:
原因补充:

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