最新公告
  • 欢迎您光临波比源码,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入我们
  • 使用jfreechart生成柱状图、折线图、和饼状图

    JFreeChart是JAVA平台上的1个开放的图表绘制类库。它完全使用JAVA语言编写,是为applications,
    applets, servlets 和JSP等使用所设计。下面我就详细介绍如何使用jfreechart生成柱状图、折线图、和饼状图。

    步骤:

    ①、导入其相应的jcommon⑴.0.16.jar和jfreechart⑴.0.13.jar文件(可点击下载)

    ②、下面就能够写实现各种图形的代码了

    A、生成柱状图:

    <span style="font-size:18px;">package com.whp.test;

    import java.awt.Font;
    import java.io.File;
    import java.io.IOException;

    import org.jfree.chart.ChartFactory;
    import org.jfree.chart.ChartFrame;
    import org.jfree.chart.ChartUtilities;
    import org.jfree.chart.JFreeChart;
    import org.jfree.chart.axis.CategoryAxis3D;
    import org.jfree.chart.axis.NumberAxis3D;
    import org.jfree.chart.axis.NumberTickUnit;
    import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
    import org.jfree.chart.plot.CategoryPlot;
    import org.jfree.chart.plot.PlotOrientation;
    import org.jfree.chart.renderer.category.BarRenderer3D;
    import org.jfree.data.category.DefaultCategoryDataset;

    public class jfreeChart {

    public static void main(String[] args) {
    // TODO Auto-generated method stub
    DefaultCategoryDataset dataset=new DefaultCategoryDataset();
    //添加数据
    dataset.addValue(98, "数学", "张3");
    dataset.addValue(87, "语文", "张3");
    dataset.addValue(68, "数学", "李4");
    dataset.addValue(89, "语文", "李4");
    dataset.addValue(56, "数学", "王5");
    dataset.addValue(96, "语文", "王5");

    JFreeChart chart=ChartFactory.createBarChart3D(
    "成绩统计表",
    "学生姓名",//X轴的标签
    "分数",//Y轴的标签
    dataset, //图标显示的数据集合
    PlotOrientation.VERTICAL, //图象的显示情势(水平或垂直)
    true,//是不是显示子标题
    true,//是不是生成提示的标签
    true); //是不是生成URL链接
    //处理图形上的乱码
    //处理主标题的乱码
    chart.getTitle().setFont(new Font("宋体",Font.BOLD,18));
    //处理子标题乱码
    chart.getLegend().setItemFont(new Font("宋体",Font.BOLD,15));
    //获得图表区域对象
    CategoryPlot categoryPlot = (CategoryPlot)chart.getPlot();
    //获得X轴的对象
    CategoryAxis3D categoryAxis3D = (CategoryAxis3D)categoryPlot.getDomainAxis();
    //获得Y轴的对象
    NumberAxis3D numberAxis3D = (NumberAxis3D)categoryPlot.getRangeAxis();
    //处理X轴上的乱码
    categoryAxis3D.setTickLabelFont(new Font("宋体",Font.BOLD,15));
    //处理X轴外的乱码
    categoryAxis3D.setLabelFont(new Font("宋体",Font.BOLD,15));
    //处理Y轴上的乱码
    numberAxis3D.setTickLabelFont(new Font("宋体",Font.BOLD,15));
    //处理Y轴外的乱码
    numberAxis3D.setLabelFont(new Font("宋体",Font.BOLD,15));
    //处理Y轴上显示的刻度,以10作为1格
    numberAxis3D.setAutoTickUnitSelection(false);
    NumberTickUnit unit = new NumberTickUnit(10);
    numberAxis3D.setTickUnit(unit);
    //获得绘图区域对象
    BarRenderer3D barRenderer3D = (BarRenderer3D)categoryPlot.getRenderer();
    //设置柱形图的宽度
    barRenderer3D.setMaximumBarWidth(0.07);
    //在图形上显示数字
    barRenderer3D.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
    barRenderer3D.setBaseItemLabelsVisible(true);
    barRenderer3D.setBaseItemLabelFont(new Font("宋体",Font.BOLD,15));

    //在D盘目录下生成图片
    File file = new File("chart.jpeg");
    try {
    ChartUtilities.saveChartAsJPEG(file, chart, 800, 600);
    } catch (IOException e) {
    e.printStackTrace();
    }

    //使用ChartFrame对象显示图象
    ChartFrame frame = new ChartFrame("xyz",chart);
    frame.setVisible(true);
    frame.pack();
    }

    }
    </span>

    结果:

    B、生成折线图

    package com.whp.test;

    import java.awt.Font;
    import java.awt.Rectangle;
    import java.io.File;
    import java.io.IOException;

    import org.jfree.chart.ChartFactory;
    import org.jfree.chart.ChartFrame;
    import org.jfree.chart.ChartUtilities;
    import org.jfree.chart.JFreeChart;
    import org.jfree.chart.axis.CategoryAxis;
    import org.jfree.chart.axis.CategoryAxis3D;
    import org.jfree.chart.axis.NumberAxis;
    import org.jfree.chart.axis.NumberAxis3D;
    import org.jfree.chart.axis.NumberTickUnit;
    import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
    import org.jfree.chart.plot.CategoryPlot;
    import org.jfree.chart.plot.PlotOrientation;
    import org.jfree.chart.renderer.category.BarRenderer3D;
    import org.jfree.chart.renderer.category.LineAndShapeRenderer;
    import org.jfree.data.category.DefaultCategoryDataset;

    public class jfreeChart1 {

    public static void main(String[] args) {
    // TODO Auto-generated method stub
    DefaultCategoryDataset dataset = new DefaultCategoryDataset();
    // 添加数据
    dataset.addValue(98, "数学", "张3");
    dataset.addValue(68, "数学", "李4");
    dataset.addValue(56, "数学", "王5");

    JFreeChart chart = ChartFactory.createLineChart("用户统计报表(所属单位)", // 主标题的名称
    "所属单位名称",// X轴的标签
    "数量",// Y轴的标签
    dataset, // 图标显示的数据集合
    PlotOrientation.VERTICAL, // 图象的显示情势(水平或垂直)
    true,// 是不是显示子标题
    true,// 是不是生成提示的标签
    true); // 是不是生成URL链接
    // 处理图形上的乱码
    // 处理主标题的乱码
    chart.getTitle().setFont(new Font("宋体", Font.BOLD, 18));
    // 处理子标题乱码
    chart.getLegend().setItemFont(new Font("宋体", Font.BOLD, 15));
    // 获得图表区域对象
    CategoryPlot categoryPlot = (CategoryPlot) chart.getPlot();
    // 获得X轴的对象
    CategoryAxis categoryAxis = (CategoryAxis) categoryPlot.getDomainAxis();
    // 获得Y轴的对象
    NumberAxis numberAxis = (NumberAxis) categoryPlot.getRangeAxis();
    // 处理X轴上的乱码
    categoryAxis.setTickLabelFont(new Font("宋体", Font.BOLD, 15));
    // 处理X轴外的乱码
    categoryAxis.setLabelFont(new Font("宋体", Font.BOLD, 15));
    // 处理Y轴上的乱码
    numberAxis.setTickLabelFont(new Font("宋体", Font.BOLD, 15));
    // 处理Y轴外的乱码
    numberAxis.setLabelFont(new Font("宋体", Font.BOLD, 15));
    // 处理Y轴上显示的刻度,以10作为1格
    numberAxis.setAutoTickUnitSelection(false);
    NumberTickUnit unit = new NumberTickUnit(10);
    numberAxis.setTickUnit(unit);
    // 获得绘图区域对象
    LineAndShapeRenderer lineAndShapeRenderer = (LineAndShapeRenderer) categoryPlot
    .getRenderer();
    // 在图形上显示数字
    lineAndShapeRenderer
    .setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
    lineAndShapeRenderer.setBaseItemLabelsVisible(true);
    lineAndShapeRenderer
    .setBaseItemLabelFont(new Font("宋体", Font.BOLD, 15));
    // 在图形上添加转折点(使用小矩形显示)
    Rectangle shape = new Rectangle(10, 10);
    lineAndShapeRenderer.setSeriesShape(0, shape);
    lineAndShapeRenderer.setSeriesShapesVisible(0, true);

    //在D盘目录下生成图片
    File file = new File("chart1.jpg");
    try {
    ChartUtilities.saveChartAsJPEG(file, chart, 800, 600);
    } catch (IOException e) {
    e.printStackTrace();
    }
    // 使用ChartFrame对象显示图象
    ChartFrame frame = new ChartFrame("xyz", chart);
    frame.setVisible(true);
    frame.pack();
    }

    }

    结果:

    C、生成饼图:

    package com.whp.test;

    import java.awt.Font;
    import java.awt.Rectangle;
    import java.io.File;
    import java.io.IOException;

    import org.jfree.chart.ChartFactory;
    import org.jfree.chart.ChartFrame;
    import org.jfree.chart.ChartUtilities;
    import org.jfree.chart.JFreeChart;
    import org.jfree.chart.axis.CategoryAxis;
    import org.jfree.chart.axis.CategoryAxis3D;
    import org.jfree.chart.axis.NumberAxis;
    import org.jfree.chart.axis.NumberAxis3D;
    import org.jfree.chart.axis.NumberTickUnit;
    import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
    import org.jfree.chart.labels.StandardPieSectionLabelGenerator;
    import org.jfree.chart.plot.CategoryPlot;
    import org.jfree.chart.plot.PiePlot3D;
    import org.jfree.chart.plot.PlotOrientation;
    import org.jfree.chart.renderer.category.BarRenderer3D;
    import org.jfree.chart.renderer.category.LineAndShapeRenderer;
    import org.jfree.data.category.DefaultCategoryDataset;
    import org.jfree.data.general.DefaultPieDataset;

    public class jfreeChart3 {

    public static void main(String[] args) {
    // TODO Auto-generated method stub
    DefaultPieDataset dataset = new DefaultPieDataset();
    //添加数据
    dataset.setValue("张3",40);
    dataset.setValue("李4",32);
    dataset.setValue("王5",28);
    JFreeChart chart = ChartFactory.createPieChart3D("比重统计报表(所属单位)", //主标题的名称
    dataset, //图标显示的数据集合
    true,//是不是显示子标题
    true,//是不是生成提示的标签
    true); //是不是生成URL链接
    //处理图形上的乱码
    //处理主标题的乱码
    chart.getTitle().setFont(new Font("宋体",Font.BOLD,18));
    //处理子标题乱码
    chart.getLegend().setItemFont(new Font("宋体",Font.BOLD,15));
    //获得图表区域对象
    PiePlot3D categoryPlot = (PiePlot3D)chart.getPlot();
    //处理图象上的乱码
    categoryPlot.setLabelFont(new Font("宋体",Font.BOLD,15));
    //设置图形的生成格式为(上海 2 (10%))
    String format = "{0} {1} ({2})";
    categoryPlot.setLabelGenerator(new StandardPieSectionLabelGenerator(format));

    //在D盘目录下生成图片
    File file = new File("chart2.jpg");
    try {
    ChartUtilities.saveChartAsJPEG(file, chart, 800, 600);
    } catch (IOException e) {
    e.printStackTrace();
    }
    //使用ChartFrame对象显示图象
    ChartFrame frame = new ChartFrame("xyz",chart);
    frame.setVisible(true);
    frame.pack();
    }

    }

    结果:


    波比源码 – 精品源码模版分享 | www.bobi11.com
    1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
    2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
    3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
    4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
    5. 如有链接无法下载、失效或广告,请联系管理员处理!
    6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
    7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!

    波比源码 » 使用jfreechart生成柱状图、折线图、和饼状图

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    波比源码
    一个高级程序员模板开发平台
    升级波友尊享更多特权立即升级