11.JFreeChart 参考API

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/cnds123321/article/details/89600728

本文链接:https://blog.csdn.net/cnds123321/article/details/89600728

目录链接:https://blog.csdn.net/cnds123321/article/details/89600379

11.1 语法

参考1:https://www.yiibai.com/jfreechart/jfreechart_referenced_apis.html

参考2:http://blog.sina.com.cn/s/blog_6af9cfe80100ygf6.html

特别是参考2,虽然没有实例,但是对于图表的设置方法总结得很完善。

11.2 实例

下面这个实例是一些简单的设置。

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.ui.Align;
import org.jfree.ui.RectangleEdge;
​
import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.io.File;
import java.io.IOException;
​
public class Chart {
    public static void main(String[] args) throws IOException {
        //创建一个数据集对象
        DefaultCategoryDataset dataset=null;
​
        //设置数据集
        dataset=new DefaultCategoryDataset();
        //第一个参数是第三个参数的值,即“最高分”,第二个参数表示目录轴的分类,第三个参数表示的x轴显示标签
        dataset.addValue(98,"语文","最高分");
        dataset.addValue(89,"语文","平均分");
        dataset.addValue(60,"语文","最低分");
        dataset.addValue(99,"数学","最高分");
        dataset.addValue(90,"数学","平均分");
        dataset.addValue(70,"数学","最低分");
        dataset.addValue(80,"英语","最高分");
        dataset.addValue(75,"英语","平均分");
        dataset.addValue(33,"英语","最低分");
​
        // 创建简单的条形图
        JFreeChart freeChart=ChartFactory.createBarChart(
                "学生信息",// 图表标题
                "学科",// 水平轴的显示标签
                "成绩",//垂直轴的显示标签
                dataset,//数据集,即要显示在图表上的数据
                PlotOrientation.VERTICAL,//图表方向:水平,垂直
                true,//是否显示图例
                false,//是否显示提示
                false//是否生成URL连接
        );
​
        //设置JFreeChart类
        freeChart.setAntiAlias(true);//设置字体模糊边界
        freeChart.setBackgroundImage(ImageIO.read(new File("c:/test.jpg")));//设置背景图片
        freeChart.setBackgroundImageAlignment(Align.TOP);//设置背景图片对齐方式
        freeChart.setBackgroundImageAlpha(0.5f);//设置背景图片透明度(0.0-1.0),数据类型是float型
        freeChart.setBorderPaint(Color.red);//设置边界线条颜色
        freeChart.setBorderStroke(new BasicStroke(5));//设置边界线条笔触
        freeChart.setBorderVisible(true);//设置边界线条是否可见
​
        //设置TextTitle类,该类设置图表的标题
        TextTitle textTitle=new TextTitle();
        textTitle.setFont(new Font("宋体",Font.BOLD,40));//设置标题字体
        textTitle.setPaint(Color.blue);//设置标题字体颜色
        textTitle.setText("字体");//设置标题内容
        textTitle.setPosition(RectangleEdge.BOTTOM);//设置标题放置在图表中的位置,可以防在顶部,底部,左侧,右侧
        freeChart.setTitle(textTitle);//将该样式添加到图表设置中
        freeChart.setAntiAlias(true);
​
        //设置副标题
        TextTitle subtitle=new TextTitle("副标题");
        freeChart.addSubtitle(subtitle);
​
        //设置Axis类
        //在你修改轴的属性之前,我们需要先获得一个轴的引用。图区类CategoryPlot和XYPlot类有两个方法getDomainAxis()和getRangeAxis()分别是获得X轴Y轴对象。这两个方法返回了一个ValueAxis对象的引用,除了在使用CategoryPlot的情况下,X轴使用的是CategoryAxis。
        CategoryPlot plot=freeChart.getCategoryPlot();
        CategoryAxis axis=plot.getDomainAxis();
        axis.setVisible(true);//设置坐标轴是否可见
        axis.setLabel("坐标轴标题");
        axis.setLabelFont(new Font("隶书",Font.BOLD,30));
        axis.setLabelPaint(Color.green);
​
        //设置Plot类,即设置数据区
        CategoryPlot categoryPlot=freeChart.getCategoryPlot();
        categoryPlot.setBackgroundImage(ImageIO.read(new File("c:/test.jpg")));
        categoryPlot.setBackgroundAlpha(0.7f);
​
        //以面板显示,创建一个图表面板
        ChartPanel chartPanel=new ChartPanel(freeChart);
        //设置大小
        chartPanel.setPreferredSize(new java.awt.Dimension(560,400));
​
        //创建一个主窗口来显示面板
        JFrame frame=new JFrame("条形图");
        frame.setLocation(500,400);
        frame.setSize(600,500);
​
        //将图表面板设置为主窗口的内容面板
        frame.setContentPane(chartPanel);
​
        //显示主窗口
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}

结果展示:

猜你喜欢

转载自blog.csdn.net/cnds123321/article/details/89600728