【Java绘图】超详细图解Jfree的安装、配置与使用

Jfree的安装和使用详解(有图和实例)

Jfree安装

freeChart是一个用Java开发的开源库。 它可以在基于Java的应用程序中使用,以创建各种图表。 通过使用JFreeChart,我们可以创建所有主要类型的2D和3D图表,如饼图,条形图,折线图,XY图表和3D图表。
下载地址:
Jfree官网下载

方法1:从终端安装(若已配置好java直接看第三步)

1.验证Java安装:打开终端并执行表格中的java命令

系统任务命令
Windows打开命令控制台C:> java -version
Linux打开命令终端$ java -version

返回java版本则证明已经安装过java,没有则需先配置好Java再进行Jfree的配置

2.配置java环境:将JAVA_HOME环境变量设置为指向计算机上安装Java的基本目录位置(以jdk1.7.0为例)

系统命令1命令2
Windows将环境变量JAVA_HOME设置为C:\ProgramFiles\java\jdk1.7.0_60附加字符串; C:\Program Files\Java\jdk1.7.0_60\bin到系统变量PATH的末尾。
Linuxexport JAVA_HOME =/usr/local/java-currentexport PATH = path : JAVA_HOME/bin/

备注:如果在安装java是没有按默认选择而是改变了路径,这里的命令和表格中提供的将会有差异。

3.安装Jfreechart:从链接http://www.jfree.org/jfreechart/download/下载最新版本的JFreeChart.zip,并把zip文件解压。本例中我将其解压到C盘中,所以执行命令如表格:

系统命令
Windows将字符串“C:\jfreechart-1.0.18\lib\jfreechart-1.0.18.jar”和“C:\jfreechart-1.0.18\lib\jcommon-1.0.22.jar”附加到用户的末尾变量CLASSPATH
Linux导出CLASSPATH = $ CLASSPATH:/usr/share/jfreechart1.0.18/lib/jfreechart-1.0.18.jar:/usr/share/jfreechart-1.0.18/lib/jcommon1.0.22.jar

如解压到别的地方,可将命令中的路径改为该文件的路径。

方法2:从IDEA配置

1.下载JfreeChart:从链接http://www.jfree.org/jfreechart/download/下载最新版本的JFreeChart.zip,并把zip文件解压。
在这里插入图片描述

2.导入idea:把JFreeChart.jar 和 jcommon.jar 两个包导入IDEA。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

Jfree使用

https://iowiki.com/jfreechart/jfreechart_quick_guide.html中对JfreeChart的基本类有着非常详尽的介绍,不在赘述。这里简单放几个示例代码,笔者会尽量详尽地进行注释,阅读一遍可以了解大概的用法。

帮助理解

想用Jfree作图,核心需要得到的就是一个参数:数据集
图的名字、图的类型、图的大小等等,都是一两行代码、一两个方法就能解决的。所以每次用Jfree处理图像,核心代码功能就在于处理数据集,并将处理好的数据集映射到Jfree的点集中。
以折线图为例:
经过种种方法你处理好了一个 double[] timeset , 则已快得到胜利。接下来只需要:
a.创建 XYseries(点集),一个XYseries对象代表了一条新线,想要图里有一条折线就创建一个,多条就多个。将timeset映射到XYseries中,一般用 点集对象.add(数据集中的x轴数据,数据集中的y轴数据)来添加。
b.创建XYSeriesCollection(图的数据集) ,一般用 图集对象.addSeries(点集对象)来添加
c.生成图像,创建Jfreechart对象等于ChartFactory.createXYLineChart {“图的标题名”,“X轴名称”,“Y轴名称”,刚刚处理好的图的数据集}
d.创建画布,新建ChartPanel对象,然后调用.setPreferredSize(X轴大小,Y轴大小)。
大概就是全部流程。接下来看几段示例代码以理解具体实现。

折线图

import org.jfree.chart.ChartPanel;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;

public class LineChart extends ApplicationFrame {
    public LineChart( String applicationTitle , String chartTitle ) {
        super(applicationTitle);

        //帮助理解中提到的创建JfreeChart
        JFreeChart lineChart = ChartFactory.createLineChart(
                chartTitle,//标题名
                "Years",//X轴
                "Number of Schools",//Y轴
                createDataset(),//图的数据集
                PlotOrientation.VERTICAL,
                true,true,false);

        //创建并设置画布大小
        ChartPanel chartPanel = new ChartPanel( lineChart );
        chartPanel.setPreferredSize( new java.awt.Dimension( 560 , 367 ) );
        setContentPane( chartPanel );
    }

    private DefaultCategoryDataset createDataset( ) {
        //产生数据集
        DefaultCategoryDataset dataset = new DefaultCategoryDataset( );
        dataset.addValue( 15 , "schools" , "1970" );
        dataset.addValue( 30 , "schools" , "1980" );
        dataset.addValue( 60 , "schools" ,  "1990" );
        dataset.addValue( 120 , "schools" , "2000" );
        dataset.addValue( 240 , "schools" , "2010" );
        dataset.addValue( 300 , "schools" , "2014" );
        return dataset;
    }

    //在主函数中执行
    public static void main( String[ ] args ) {
        LineChart chart = new LineChart(
                "School Vs Years" ,
                "Numer of Schools vs years");
        chart.pack( );
        RefineryUtilities.centerFrameOnScreen( chart );
        chart.setVisible( true );
    }
}

跑出来的结果:
在这里插入图片描述

饼状图

import javax.swing.JPanel;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
        //相比折线图改动
import org.jfree.data.general.DefaultPieDataset; 
import org.jfree.data.general.PieDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
public class PieChart extends ApplicationFrame {
    public PieChart( String title ) {
        super( title );
        setContentPane(createDemoPanel( ));
    }
    private static PieDataset createDataset( ) {
        DefaultPieDataset dataset = new DefaultPieDataset( );
        //("数值对应名称",百分比)
        dataset.setValue( "1970",10.00);
        dataset.setValue( "1980",20.00);
        dataset.setValue( "1990",30.00 );
        dataset.setValue( "2000",20.00 );
        dataset.setValue( "2010",10.00);
        dataset.setValue( "2014",10.00);
        return dataset;
    }
    private static JFreeChart createChart( PieDataset dataset ) {
        JFreeChart chart = ChartFactory.createPieChart(
                "Years vs Sschools",   // 标题
                dataset,          // 数据
                true,            
                true,
                false);
        return chart;
    }
    public static JPanel createDemoPanel( ) {
        JFreeChart chart = createChart(createDataset( ) );
        return new ChartPanel( chart );
    }
    public static void main( String[ ] args ) {
        PieChart demo = new PieChart( "Years vs Sschools" );
        demo.setSize( 560 , 367 );
        RefineryUtilities.centerFrameOnScreen( demo );
        demo.setVisible( true );
    }
}

跑出来的结果:
在这里插入图片描述

柱状图

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;

public class Chart {
    public static void main(String[] args) {
        
        DefaultCategoryDataset dataset = new DefaultCategoryDataset();
        dataset.addValue(15, "school1", "1970");
        dataset.addValue(30, "school1", "1980");
        dataset.addValue(60, "school1", "1990");
        dataset.addValue(120, "school2", "1970");
        dataset.addValue(240, "school2", "1980");
        dataset.addValue(300, "school2", "1990");

        JFreeChart chart = ChartFactory.createBarChart3D(
                "Years vs School",
                "year",
                "number",
                dataset,
                PlotOrientation.VERTICAL,
                true, true, false);


        ChartFrame chartFrame = new ChartFrame("Test", chart);
        chartFrame.pack();
        chartFrame.setVisible(true);
    }

}

跑出来的结果如下:
在这里插入图片描述

实例:利用 ω \omega ω的定义证明 n**2= ω \omega ω(n)

import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;

import javax.swing.*;
`
public class OmegaExample extends JFrame {

    public OmegaExample(String title) {
        super(title);

        XYSeries nSeries = new XYSeries("n");          //第一个点集(即图里第一条线)的名字
        XYSeries nSquaredSeries = new XYSeries("n^2"); //第二个点集(即图里第二条线)的名字

        int maxValue = 10;

        //为点集填充数值
        for (int n = 1; n <= maxValue; n++) {
            nSeries.add(n, n);
            nSquaredSeries.add(n, Math.pow(n, 2));
        }

        //将两个点集添加到collection里
        XYSeriesCollection dataset = new XYSeriesCollection();
        dataset.addSeries(nSeries);
        dataset.addSeries(nSquaredSeries);

        JFreeChart chart = ChartFactory.createXYLineChart(
                "Growth Rates: n vs n^2", //图的标题
                "n",                      //X轴的名字
                "Value",                  //y轴的名字
                dataset                   //绘图所用数据集
        );

        ChartPanel chartPanel = new ChartPanel(chart);
        chartPanel.setPreferredSize(new java.awt.Dimension(560, 370));                      //创建560×370的画布
        setContentPane(chartPanel);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> {
            OmegaExample example = new OmegaExample("OmegaExample");
            example.setSize(800, 600);
            example.setLocationRelativeTo(null);
            example.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
            example.setVisible(true);        //让图片可见
        });
    }
}

跑出来的结果:
在这里插入图片描述

常见新手问题

Q1:我导入了Jfreechart但是IDEA提示无法识别方法?
A1:点进Project Structure-Lib,检查是否已添加Jfreechart和Jcommon,两个都得有。常见情况是没有加上Jcommon。

Q2:IDEA提示无法识别setVisible()等方法?
A2:大概率是你复制代码到IDEA中,但是更改过源代码的类名。若是此种情况,在主函数中找到使用了原类名的地方修改成新类名即可。

  • 29
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: org.jfree.chart包是Java图表库JFreeChart的一部分,可以用于创建各种类型的图表。要安装这个包,可以按照以下步骤进行操作: 1. 下载JFreeChart库的最新版本,可以从官方网站或其他可靠的下载站点获取。 2. 解压下载的文件,将其中的jfreechart-x.x.x.jar文件复制到你的项目中。 3. 在你的Java项目中添加jfreechart-x.x.x.jar文件的引用,可以使用Eclipse等IDE工具或手动编辑项目的classpath。 4. 在你的Java代码中导入org.jfree.chart包,即可开始使用其中的类和方法。 希望这些步骤能够帮助你成功安装org.jfree.chart包。 ### 回答2: org.jfree.chart是Java程序开发中比较常用的绘图库,可以通过Maven依赖或手动安装的方式使用。下面分别介绍这两种方式。 1. Maven依赖 通过Maven依赖,可在pom.xml文件的dependencies标签中添加以下代码: ``` <dependency> <groupId>jfree</groupId> <artifactId>jfreechart</artifactId> <version>1.5.1</version> </dependency> ``` 即可将org.jfree.chart库添加到项目中。 2. 手动安装 手动安装org.jfree.chart,需要进行以下几个步骤: ① 下载org.jfree.chart库的jar文件。可在官网(https://sourceforge.net/projects/jfreechart/files/)下载最新版本的jar文件; ② 在工程中创建lib文件夹,并将下载的jar文件复制到该文件夹下; ③ 右键单击jar文件,在弹出的菜单中选择“Build Path”-“Add to Build Path”,将jar文件添加到项目的classpath中。 以上就是org.jfree.chart包的安装方法。通过Maven依赖可以更加方便的使用org.jfree.chart库,而手动安装则可以更好地理解和掌握org.jfree.chart库的特性和实现。 ### 回答3: org.jfree.chart是一个Java图表库,它提供了一系列强大的基于Java的图表,可以用于创建各种各样的图形,包括直方图、折线图、饼图等。要想使用org.jfree.chart包,需要在安装Java的基础上下载并安装它。 安装步骤如下: 第一步、下载org.jfree.chart包 下载网址:https://sourceforge.net/projects/jfreechart/files/latest/download 请按照您的需要选择适当的版本进行下载。下载完成后,将文件解压缩到任何您想要的位置,记住此位置,稍后在命令提示符中使用。 第二步、将org.jfree.chart包添加到类路径 在Windows中,在开始菜单中搜索“cmd”并运行命令提示符。在MacOS或Linux中,打开终端。 在命令提示符中输入以下命令: ``` set CLASSPATH=path\to\jfreechart-xxx.jar ``` 在这里,您需要将“path\to”替换为您解压缩org.jfree.chart文件的路径,以及“xxx.jar”为文件名。例如,在我的计算机上,我可以键入以下命令: ``` set CLASSPATH=C:\Users\Maggie\Downloads\jfreechart-1.5.0\lib\jfreechart-1.5.0.jar ``` 确保您选择了正确的版本号。 第三步、在Java代码中使用org.jfree.chart包 因为您已经将org.jfree.chart包添加到类路径中,所以现在可以开始在Java代码中使用它了。您可以使用电子邮件客户端、文本编辑器或IDE来编写您的Java代码。按照org.jfree.chart包的最佳实践,您应该在开头添加以下内容 ``` import org.jfree.chart.*; import org.jfree.data.category.*; ``` 现在,您就可以使用org.jfree.chart库中的类和方法来创建自定义图表,如: ``` DefaultCategoryDataset dataset = new DefaultCategoryDataset(); dataset.setValue(75, "Marks", "Maths"); dataset.setValue(90, "Marks", "Science"); dataset.setValue(68, "Marks", "English"); JFreeChart chart = ChartFactory.createBarChart("Student Scores", "Subjects", "Marks", dataset, PlotOrientation.VERTICAL, false, true, false); ChartPanel panel = new ChartPanel(chart); JFrame frame = new JFrame("Student Scores"); frame.getContentPane().add(panel); frame.setSize(500, 500); frame.setVisible(true); ``` 这将创建一个垂直方向的普通条形图,显示“Maths”,“Science”和“English”科目的成绩。现在您可以编译并运行代码,以查看所创建图表的输出。 总之,org.jfree.chart包是一个强大的Java图表库,可以在Java程序中创建各种各样的图表。如果您想使用它,只需按照上述步骤将其添加到类路径中,然后开始编写代码即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值