`

java插件- jfreeChart画图

阅读更多

   1、折线图demo

package com.pdf;

import java.awt.Font;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.StandardChartTheme;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.general.DatasetUtilities;

//JFreeChart Line Chart(折线图)  
public class CreateJFreeChartLine {
    public static void main(String[] args) {
        // 步骤1:创建CategoryDataset对象(准备数据)
        CategoryDataset dataset = createDataset();
        // 步骤2:根据Dataset 生成JFreeChart对象,以及做相应的设置
        JFreeChart freeChart = createChart(dataset);
        // 步骤3:将JFreeChart对象输出到文件,Servlet输出流等
        saveAsFile(freeChart, "c:jfreechartline.jpg", 600, 400);
    }

    // 保存为文件
    public static void saveAsFile(JFreeChart chart, String outputPath,int weight, int height) {
        FileOutputStream out = null;
        try {
            File outFile = new File(outputPath);
            if (!outFile.getParentFile().exists()) {
                outFile.getParentFile().mkdirs();
            }
            out = new FileOutputStream(outputPath);
            // 保存为PNG
            // ChartUtilities.writeChartAsPNG(out, chart, 600, 400);
            // 保存为JPEG
            ChartUtilities.writeChartAsJPEG(out, chart, 600, 400);
            out.flush();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (out != null) {
                try {
                    out.close();
                } catch (IOException e) {
                    // do nothing
                }
            }
        }
    }

    // 根据CategoryDataset创建JFreeChart对象
    public static JFreeChart createChart(CategoryDataset categoryDataset) {
        //这里的"name"参数;是什么意思我也不知道,反正这样可以用
        StandardChartTheme standardChartTheme = new StandardChartTheme("name");
        //可以改变轴向的字体
        standardChartTheme.setLargeFont(new Font("楷体",Font.BOLD, 12));
        //可以改变图例的字体
        standardChartTheme.setRegularFont(new Font("宋体",Font.BOLD, 8));
        //可以改变图标的标题字体
        standardChartTheme.setExtraLargeFont(new Font("隶书",Font.BOLD, 20));
        ChartFactory.setChartTheme(standardChartTheme);//设置主题
        // 创建JFreeChart对象:ChartFactory.createLineChart
        JFreeChart jfreechart = ChartFactory.createLineChart3D("不同类别按小时计算拆线图", "年分", "数量", categoryDataset, PlotOrientation.VERTICAL, true, true, false);
        // 使用CategoryPlot设置各种参数。以下设置可以省略。
        CategoryPlot plot = (CategoryPlot) jfreechart.getPlot();
        // 背景色 透明度
        plot.setBackgroundAlpha(0.5f);
        // 前景色 透明度
        plot.setForegroundAlpha(0.5f);
        // 其他设置 参考 CategoryPlot类
        return jfreechart;
    }
    /**
     * 创建数据集
     * @return
     */
    public static CategoryDataset createDataset() {

        String[] rowKeys = {"A平台","你妹"};
        String[] colKeys = {"0:00", "1:00", "2:00", "7:00", "8:00", "9:00","10:00", "11:00", "12:00", "13:00", "16:00", "20:00", "21:00","23:00" };

        double[][] data = {{4, 8, 1, 1, 1, 1, 2, 2, 2, 1, 8, 2, 1, 1 },{9, 3, 5, 8, 1, 7, 2, 2, 5, 1, 8, 2, 3, 1}};

        return DatasetUtilities.createCategoryDataset(rowKeys, colKeys, data);
    }
}

 

2、折线图自定义x轴demo

package com.pdf;

import java.awt.Color;
import java.awt.Dimension;
import javax.swing.JPanel;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.data.xy.XYDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RectangleInsets;
import org.jfree.ui.RefineryUtilities;
 
public class LineChartDemo2 extends ApplicationFrame
{
  public LineChartDemo2(String paramString)
  {
    super(paramString);
    XYDataset localXYDataset = createDataset();
    JFreeChart localJFreeChart = createChart(localXYDataset);
    ChartPanel localChartPanel = new ChartPanel(localJFreeChart);
    localChartPanel.setPreferredSize(new Dimension(500, 270));
    setContentPane(localChartPanel);
  }
 
  private static XYDataset createDataset()
  {
    XYSeries localXYSeries1 = new XYSeries("First");
    localXYSeries1.add(1, 1);
    localXYSeries1.add(2, 4);
    localXYSeries1.add(3, 3);
    localXYSeries1.add(4, 5);
    localXYSeries1.add(5, 5);
    localXYSeries1.add(6, 7);
    localXYSeries1.add(7, 7);
    localXYSeries1.add(21, 8);
   
    XYSeries localXYSeries2 = new XYSeries("Second");
    localXYSeries2.add(1, 5);
    localXYSeries2.add(2, 7);
    localXYSeries2.add(3, 6);
    localXYSeries2.add(4, 8);
    localXYSeries2.add(5, 4);
    localXYSeries2.add(6, 4);
    localXYSeries2.add(7, 2);
    localXYSeries2.add(8, 1);
    XYSeries localXYSeries3 = new XYSeries("Third");
    localXYSeries3.add(3, 4);
    localXYSeries3.add(4, 3);
    localXYSeries3.add(5, 2);
    localXYSeries3.add(6, 3);
    localXYSeries3.add(7, 6);
    localXYSeries3.add(8, 3);
    localXYSeries3.add(9, 4);
    localXYSeries3.add(10, 3);
    XYSeriesCollection localXYSeriesCollection = new XYSeriesCollection();
    localXYSeriesCollection.addSeries(localXYSeries1);
    localXYSeriesCollection.addSeries(localXYSeries2);
    localXYSeriesCollection.addSeries(localXYSeries3);
    return localXYSeriesCollection;
  }
 
  private static JFreeChart createChart(XYDataset paramXYDataset)
  {
    JFreeChart localJFreeChart = ChartFactory.createXYLineChart("Line Chart Demo 2", "X", "Y", paramXYDataset, PlotOrientation.VERTICAL, true, true, false);
    localJFreeChart.setBackgroundPaint(Color.white);
    XYPlot localXYPlot = (XYPlot)localJFreeChart.getPlot();
    localXYPlot.setBackgroundPaint(Color.lightGray);
    localXYPlot.setAxisOffset(new RectangleInsets(10, 10, 10, 10));
    localXYPlot.setDomainGridlinePaint(Color.white);
    localXYPlot.setRangeGridlinePaint(Color.white);
    XYLineAndShapeRenderer localXYLineAndShapeRenderer = (XYLineAndShapeRenderer)localXYPlot.getRenderer();
    localXYLineAndShapeRenderer.setBaseShapesVisible(true);
    localXYLineAndShapeRenderer.setBaseShapesFilled(true);
    NumberAxis localNumberAxis = (NumberAxis)localXYPlot.getRangeAxis();
    localNumberAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
    return localJFreeChart;
  }
 
  public static JPanel createDemoPanel()
  {
    JFreeChart localJFreeChart = createChart(createDataset());
    return new ChartPanel(localJFreeChart);
  }
 
  public static void main(String[] paramArrayOfString)
  {
    LineChartDemo2 localLineChartDemo2 = new LineChartDemo2("Line Chart Demo 2");
    localLineChartDemo2.pack();
    RefineryUtilities.centerFrameOnScreen(localLineChartDemo2);
    localLineChartDemo2.setVisible(true);
  }
}

 

 

3、将柱状图的Y轴,显示为百分比的demo

package com.pdf;

import java.awt.Color;
import java.awt.Font;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.DecimalFormat;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.StandardChartTheme;
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.CategoryDataset;
import org.jfree.data.general.DatasetUtilities;

//JFreeChart Line Chart(柱状图)  
public class CreateJFreeChartColumn {
    public static void main(String[] args) {
        // 步骤1:创建CategoryDataset对象(准备数据)
        CategoryDataset dataset = createDataset();
        // 步骤2:根据Dataset 生成JFreeChart对象,以及做相应的设置
        JFreeChart freeChart = createChart(dataset);
        // 步骤3:将JFreeChart对象输出到文件,Servlet输出流等
        saveAsFile(freeChart, "c:jfreechartline.jpg", 600, 400);
    }

    // 保存为文件
    public static void saveAsFile(JFreeChart chart, String outputPath,int weight, int height) {
        FileOutputStream out = null;
        try {
            File outFile = new File(outputPath);
            if (!outFile.getParentFile().exists()) {
                outFile.getParentFile().mkdirs();
            }
            out = new FileOutputStream(outputPath);
            // 保存为PNG
            // ChartUtilities.writeChartAsPNG(out, chart, 600, 400);
            // 保存为JPEG
            ChartUtilities.writeChartAsJPEG(out, chart, 600, 400);
            out.flush();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (out != null) {
                try {
                    out.close();
                } catch (IOException e) {
                    // do nothing
                }
            }
        }
    }

    // 根据CategoryDataset创建JFreeChart对象
    public static JFreeChart createChart(CategoryDataset categoryDataset) {
        //这里的"name"参数;是什么意思我也不知道,反正这样可以用
        StandardChartTheme standardChartTheme = new StandardChartTheme("name");
        //可以改变轴向的字体
        standardChartTheme.setLargeFont(new Font("楷体",Font.BOLD, 12));
        //可以改变图例的字体
        standardChartTheme.setRegularFont(new Font("宋体",Font.BOLD, 8));
        //可以改变图标的标题字体
        standardChartTheme.setExtraLargeFont(new Font("隶书",Font.BOLD, 20));
        ChartFactory.setChartTheme(standardChartTheme);//设置主题
        // 创建JFreeChart对象:ChartFactory.createLineChart
        JFreeChart jfreechart = ChartFactory.createBarChart("不同类别按小时计算拆线图", "年分", "数量", categoryDataset, PlotOrientation.VERTICAL, true, true, false);
        // 使用CategoryPlot设置各种参数。以下设置可以省略。
        CategoryPlot plot = (CategoryPlot) jfreechart.getPlot();
        
        //设置柱状图显示为百分比
        BarRenderer3D renderer = new BarRenderer3D();
        renderer.setBaseOutlinePaint(Color.BLACK);
        //显示每个柱的数值,并修改该数值的字体属性
        renderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator("{2}",DecimalFormat.getPercentInstance()));
	    renderer.setItemLabelsVisible(true);
	    plot.setRenderer(renderer);
	    
        // 背景色 透明度
        plot.setBackgroundAlpha(0.5f);
        // 前景色 透明度
        plot.setForegroundAlpha(0.5f);
        // 其他设置 参考 CategoryPlot类
        return jfreechart;
    }
    /**
     * 创建数据集
     * @return
     */
    public static CategoryDataset createDataset() {

        String[] rowKeys = {"A平台"};
        String[] colKeys = {"0:00", "1:00", "2:00", "7:00", "8:00", "9:00","10:00", "11:00", "12:00", "13:00", "16:00", "20:00", "21:00","23:00" };

        double[][] data = {{0.8, 0.5, 0.124, 0.58, 0.25, 0.23, 0.12, 0.47, 0.29, 0.86, 0.75, 0.64, 0.31, 0.123 }};

        return DatasetUtilities.createCategoryDataset(rowKeys, colKeys, data);
    }
}

 

 

分享到:
评论

相关推荐

    java--JFreeChartDemo

    Java中的JFreeChart库是一个强大的工具,用于生成各种图表,如折线图、柱状图、饼图、散点图等。它为开发者提供了一种简单的方法来在Java应用程序、Swing组件或Web应用程序中创建高质量的图表。在这个"java--...

    struts2-jfreechart-plugin-2.1.8.1.jar

    struts2-jfreechart-plugin-2.1.8.1.jar

    struts2-jfreechart-plugin-2.0.11.jar

    struts2-jfreechart-plugin-2.0.11.jarstruts2-jfreechart-plugin-2.0.11.jarstruts2-jfreechart-plugin-2.0.11.jar

    struts2-jfreechart-plugin-2.1.6.jar

    struts2-jfreechart-plugin-2.1.6.jar

    struts2-jfreechart-plugin-2.0.8.jar

    struts2-jfreechart-plugin-2.0.8.jar

    struts2-jfreechart-plugin-2.1.8.1

    struts2-jfreechart-plugin-2.1.8.1

    struts2-jfreechart-plugin-2.3.4.1.jar

    struts2-jfreechart-plugin-2.3.4.1.jar

    如何修改struts2-jfreechart-plugin2.0.11jar包

    `strugs2-jfreechart-plugin`插件结合了这两者的优点,为开发者提供了一种便捷的方式来生成图表并嵌入到Struts2应用中。有时为了满足特定的需求或修复某些bug,我们可能需要对这个插件进行定制化修改。 #### 二、...

    struts2-jfreechart-plugin-2.2.3.jar

    struts2 结合强大的图形报表开发包进行集成开发,能够降低系统的耦合和灵活的报表开发方式,展现不同的图形化报表,给企业带来更加精美的报表解决方案。

    struts2-jfreechart-plugin-2.1.8

    最新官方struts2-plugin jfreechart,分享于有需要的朋友

    struts2-jfreechart-plugin-2.1.6.jar.zip_jfreechart struts2_jfree

    "jfreechart-plug" 标签可能是指JFreeChart的插件化特性,表明这个插件可以被轻松地添加到项目中,就像其他Struts2的插件一样,通过配置文件进行管理。 在压缩包中的"struts2-jfreechart-plugin-2.1.6.jar" 文件,...

    Struts2 -JFreeChart

    Struts2 -JFreeChartStruts2 -JFreeChartStruts2 -JFreeChartStruts2 -JFreeChartStruts2 -JFreeChartStruts2 -JFreeChartStruts2 -JFreeChartStruts2 -JFreeChartStruts2 -JFreeChart

    struts-2.3.20-jfreechart插件源码

    JFreeChart 是一个强大的Java库,用于创建各种类型的图表,如折线图、柱状图、饼图等,广泛应用于数据分析和可视化。`struts-2.3.20-jfreechart插件`是Struts 2框架的一个扩展,它整合了JFreeChart的功能,使得在...

    struts2-jfreechart-plugin-2.3.15.3.jar

    struts2整合jfreechart 的工具jar文件 struts2-jfreechart-plugin-2.3.15.3.jar

    JFreeChart画图

    **JFreeChart** 是一个Java库,用于生成高质量的图表,包括曲线图、柱状图、折线图、饼图以及甘特图等。它在Java应用和Web应用中广泛使用,尤其是对于数据可视化和报告生成。JFreeChart库不仅支持静态图表,还能够...

    ssh-jfreechart

    在IT行业中,SSH(Secure Shell)通常用于远程访问和管理服务器,而JFreeChart则是一个强大的Java库,用于创建各种类型的图表,如折线图、柱状图、饼图等。这个名为"ssh-jfreechart"的主题是关于如何在SSH环境中利用...

    java统计图的生成-jfreechart-1.0.1.zip

    Java统计图生成库JFreeChart是一个强大的开源工具,专为Java开发者设计,用于创建各种复杂的图表,如柱状图、饼图和折线图。它提供了丰富的功能和灵活性,使得在应用程序中集成可视化数据变得非常容易,而无需深入...

    jfreechart-1.0.19

    1. **jfreechart-1.0.19-install.pdf**:这可能是安装或使用指南,详细介绍了如何将JFreeChart库集成到你的Java项目中,包括依赖管理和配置步骤,可能还包括示例代码和最佳实践。 2. **jfreechart-1.0.19-fx-...

    jfreechart,jfreechart-1.0.13,jfreechart-1.0.13,jfreechart

    这个压缩包“jfreechart-1.0.13”包含了JFreeChart的完整版本,让我们一起深入探讨其核心功能和使用方法。 JFreeChart是Java中最优秀的绘图工具之一,它支持多种图表类型,包括折线图、柱状图、饼图、散点图、甘特...

    java/jsp图表生成-JfreeChart套装(源码包,javadoc,安装手册,本人精选简明教程)

    JFreeChart是一组功能强大、灵活易用的Java绘图API,使用它可以生成多种通用性的报表,包括 柱状图、饼图、曲线图、甘特图等。它能够用在Swing和Web等中制作自定义的图表或报表,并且得 到广泛的应用。 ...

Global site tag (gtag.js) - Google Analytics