Java开发实例大全提高篇——JFreeChart图表篇(一)

第2篇 JFreeChart图表篇
第7章 JFreeChart基本操作
7.1 JFreeChart基础操作
实例144 基本饼图
    public JFreeChart getJFreeChart() {
        PieDataset dataset = getPieDataset();
        JFreeChart chart = ChartFactory.createPieChart("Pie title",
                dataset, false, false, false);
        return chart;
    }

    /**
     * 创建一个饼图表的数据集
     *
     * @return
     */
    private PieDataset getPieDataset() {
        DefaultPieDataset dataset = new DefaultPieDataset();
        dataset.setValue("A", 200);
        dataset.setValue("B", 400);
        dataset.setValue("C", 500);
        return dataset;
    }

    public static void main(String[] args) {
        ChartDemo1 chartDemo1 = new ChartDemo1();
        ChartFrame chartFrame = new ChartFrame("JFreeChar Demo",
                chartDemo1.getJFreeChart());
        chartFrame.pack();
        chartFrame.setVisible(true);
    }

实例145 显示图示
    public JFreeChart getJFreeChart() {
        PieDataset dataset = getPieDataset();
        JFreeChart chart = ChartFactory.createPieChart("Pie title", dataset,
                true, false, false);
        return chart;
    }

    /**
     * 创建一个饼图表的数据集
     *
     * @return
     */
    private PieDataset getPieDataset() {
        DefaultPieDataset dataset = new DefaultPieDataset();
        dataset.setValue("A", 200);
        dataset.setValue("B", 400);
        dataset.setValue("C", 500);
        return dataset;
    }

    public static void main(String[] args) {
        ChartDemo2 demo = new ChartDemo2();
        ChartFrame chartFrame = new ChartFrame("JFreeChar Demo",
                demo.getJFreeChart());
        chartFrame.pack();
        chartFrame.setVisible(true);

    }

实例146 工具栏提示
    public JFreeChart getJFreeChart() {
        PieDataset dataset = getPieDataset();
        JFreeChart chart = ChartFactory.createPieChart("Pie title", dataset,
                true, true, false);
        return chart;
    }

    /**
     * 创建一个饼图表的数据集
     *
     * @return
     */
    private PieDataset getPieDataset() {
        DefaultPieDataset dataset = new DefaultPieDataset();
        dataset.setValue("A", 200);
        dataset.setValue("B", 400);
        dataset.setValue("C", 500);
        return dataset;
    }

    public static void main(String[] args) {
        ChartDemo3 demo = new ChartDemo3();
        ChartFrame chartFrame = new ChartFrame("JFreeChar Demo",
                demo.getJFreeChart());
        chartFrame.pack();
        chartFrame.setVisible(true);

    }


实例147 乱码问题
    public JFreeChart getJFreeChart() {
        PieDataset dataset = getPieDataset();
        // locale.getISO3Language()
        JFreeChart chart = ChartFactory.createPieChart("2010.8月份销售排行", dataset,
                true, true, false);

        return chart;
    }

    /**
     * 设置饼图使用的字体
     *
     * @param chart
     */
    public void setPiePoltFont(JFreeChart chart) {

        // 图表(饼图)
        PiePlot piePlot = (PiePlot) chart.getPlot();
        piePlot.setLabelFont(new Font("宋体", Font.PLAIN, 14));

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.BOLD, 20));

        // 图例
        LegendTitle legendTitle = chart.getLegend();
        legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 12));

    }

    /**
     * 创建一个饼图表的数据集
     *
     * @return
     */
    private PieDataset getPieDataset() {
        DefaultPieDataset dataset = new DefaultPieDataset();
        dataset.setValue("JAVA从入门到精通(第2版)", 500);
        dataset.setValue("视频学JAVA", 800);
        dataset.setValue("JAVA全能速查宝典", 1000);
        return dataset;
    }

    public static void main(String[] args) {
        ChartDemo4 demo = new ChartDemo4();
        JFreeChart chart = demo.getJFreeChart();
        demo.setPiePoltFont(chart);
        ChartFrame chartFrame = new ChartFrame("JFreeChart的例子", chart);
        chartFrame.pack();
        chartFrame.setVisible(true);

    }


实例148 显示数值
    public JFreeChart getJFreeChart() {
        PieDataset dataset = getPieDataset();
        // locale.getISO3Language()
        JFreeChart chart = ChartFactory.createPieChart("2010.8月份销售排行", dataset,
                true, true, false);

        return chart;
    }

    /**
     * 设置饼图使用的字体
     *
     * @param chart
     */
    public void setPiePoltFont(JFreeChart chart) {

        // 图表(饼图)
        PiePlot piePlot = (PiePlot) chart.getPlot();
        piePlot.setLabelFont(new Font("宋体", Font.PLAIN, 14));

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.BOLD, 20));

        // 图例
        LegendTitle legendTitle = chart.getLegend();
        legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 12));

    }

    /**
     * 设置饼图标签
     *
     * @param chart
     */
    public void setPiePoltNum(JFreeChart chart) {

        // 图表(饼图)
        PiePlot piePlot = (PiePlot) chart.getPlot();
        piePlot.setLabelGenerator(new StandardPieSectionLabelGenerator("{1}"));
    }

    /**
     * 创建一个饼图表的数据集
     *
     * @return
     */
    private PieDataset getPieDataset() {
        DefaultPieDataset dataset = new DefaultPieDataset();
        dataset.setValue("JAVA从入门到精通(第2版)", 500);
        dataset.setValue("视频学JAVA", 800);
        dataset.setValue("JAVA全能速查宝典", 1000);
        return dataset;
    }

    public static void main(String[] args) {
        ChartDemo5 demo = new ChartDemo5();
        JFreeChart chart = demo.getJFreeChart();
        demo.setPiePoltFont(chart);
        demo.setPiePoltNum(chart);
        ChartFrame chartFrame = new ChartFrame("JFreeChart的例子", chart);
        chartFrame.pack();
        chartFrame.setVisible(true);

    }

实例149 抗锯齿设置
    public JFreeChart getJFreeChart() {
        PieDataset dataset = getPieDataset();
        // locale.getISO3Language()
        JFreeChart chart = ChartFactory.createPieChart("2010.8月份销售排行", dataset,
                true, true, false);
        //关闭抗锯齿
        chart.setAntiAlias(false);

        return chart;
    }

    /**
     * 设置饼图使用的字体
     *
     * @param chart
     */
    public void setPiePoltFont(JFreeChart chart) {

        // 图表(饼图)
        PiePlot piePlot = (PiePlot) chart.getPlot();
        piePlot.setLabelFont(new Font("宋体", Font.PLAIN, 14));
        piePlot.setLabelGenerator(new StandardPieSectionLabelGenerator("{1}"));

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.BOLD, 20));

        // 图例
        LegendTitle legendTitle = chart.getLegend();
        legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 12));

    }


    /**
     * 创建一个饼图表的数据集
     *
     * @return
     */
    private PieDataset getPieDataset() {
        DefaultPieDataset dataset = new DefaultPieDataset();
        dataset.setValue("JAVA从入门到精通(第2版)", 500);
        dataset.setValue("视频学JAVA", 800);
        dataset.setValue("JAVA全能速查宝典", 1000);
        return dataset;
    }

    public static void main(String[] args) {
        ChartDemo6 demo = new ChartDemo6();
        JFreeChart chart = demo.getJFreeChart();
        demo.setPiePoltFont(chart);
        ChartFrame chartFrame = new ChartFrame("JFreeChart的例子", chart);
        chartFrame.pack();
        chartFrame.setVisible(true);
    }


7.2 设置图表背景
实例150 设置背景图片
    public JFreeChart getJFreeChart() {
        PieDataset dataset = getPieDataset();
        // locale.getISO3Language()
        JFreeChart chart = ChartFactory.createPieChart("2010.8月份销售排行", dataset,
                true, true, false);

        return chart;
    }

    /**
     * 设置饼图使用的字体
     *
     * @param chart
     */
    public void setPiePoltFont(JFreeChart chart) {

        // 图表(饼图)
        PiePlot piePlot = (PiePlot) chart.getPlot();
        piePlot.setLabelFont(new Font("宋体", Font.PLAIN, 14));
        piePlot.setLabelGenerator(new StandardPieSectionLabelGenerator("{1}"));

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.BOLD, 20));

        // 图例
        LegendTitle legendTitle = chart.getLegend();
        legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 12));

    }

    /**
     * 设置饼图背景图
     *
     * @param chart
     */
    public void setBackgroundImage(JFreeChart chart) {

        Image image = null;
        try {
            image = ImageIO.read(new File("backgroundImage.jpg"));
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        PiePlot piePlot = (PiePlot) chart.getPlot();
        piePlot.setBackgroundImage(image);
        //chart.setBackgroundImage(image);
    }

    /**
     * 创建一个饼图表的数据集
     *
     * @return
     */
    private PieDataset getPieDataset() {
        DefaultPieDataset dataset = new DefaultPieDataset();
        dataset.setValue("JAVA从入门到精通(第2版)", 500);
        dataset.setValue("视频学JAVA", 800);
        dataset.setValue("JAVA全能速查宝典", 1000);
        return dataset;
    }

    public static void main(String[] args) {
        ChartDemo7 demo = new ChartDemo7();
        JFreeChart chart = demo.getJFreeChart();
        demo.setPiePoltFont(chart);
        demo.setBackgroundImage(chart);
        ChartFrame chartFrame = new ChartFrame("JFreeChart的例子", chart);
        chartFrame.pack();
        chartFrame.setVisible(true);
    }


实例151 设置图片对齐方式
    public JFreeChart getJFreeChart() {
        PieDataset dataset = getPieDataset();
        // locale.getISO3Language()
        JFreeChart chart = ChartFactory.createPieChart("2010.8月份销售排行", dataset,
                true, true, false);

        return chart;
    }

    /**
     * 设置饼图使用的字体
     *
     * @param chart
     */
    public void setPiePoltFont(JFreeChart chart) {

        // 图表(饼图)
        PiePlot piePlot = (PiePlot) chart.getPlot();
        piePlot.setLabelFont(new Font("宋体", Font.PLAIN, 14));
        piePlot.setLabelGenerator(new StandardPieSectionLabelGenerator("{1}"));

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.BOLD, 20));

        // 图例
        LegendTitle legendTitle = chart.getLegend();
        legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 12));

    }

    /**
     * 设置饼图背景图
     *
     * @param chart
     */
    public void setBackgroundImage(JFreeChart chart) {

        Image image = null;
        try {
            image = ImageIO.read(new File("backgroundImage.jpg"));
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        PiePlot piePlot = (PiePlot) chart.getPlot();
        piePlot.setBackgroundImage(image);
        //设置背景对齐
        piePlot.setBackgroundImageAlignment(Align.CENTER);
    }

    /**
     * 创建一个饼图表的数据集
     *
     * @return
     */
    private PieDataset getPieDataset() {
        DefaultPieDataset dataset = new DefaultPieDataset();
        dataset.setValue("JAVA从入门到精通(第2版)", 500);
        dataset.setValue("视频学JAVA", 800);
        dataset.setValue("JAVA全能速查宝典", 1000);
        return dataset;
    }

    public static void main(String[] args) {
        ChartDemo8 demo = new ChartDemo8();
        JFreeChart chart = demo.getJFreeChart();
        demo.setPiePoltFont(chart);
        demo.setBackgroundImage(chart);
        ChartFrame chartFrame = new ChartFrame("JFreeChart的例子", chart);
        chartFrame.pack();
        chartFrame.setVisible(true);
    }


实例152 设置背景图片透明度
    public JFreeChart getJFreeChart() {
        PieDataset dataset = getPieDataset();
        // locale.getISO3Language()
        JFreeChart chart = ChartFactory.createPieChart("2010.8月份销售排行", dataset,
                true, true, false);

        return chart;
    }

    /**
     * 设置饼图使用的字体
     *
     * @param chart
     */
    public void setPiePoltFont(JFreeChart chart) {

        // 图表(饼图)
        PiePlot piePlot = (PiePlot) chart.getPlot();
        piePlot.setLabelFont(new Font("宋体", Font.PLAIN, 14));
        piePlot.setLabelGenerator(new StandardPieSectionLabelGenerator("{1}"));

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.BOLD, 20));

        // 图例
        LegendTitle legendTitle = chart.getLegend();
        legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 12));

    }

    /**
     * 设置饼图背景图
     *
     * @param chart
     */
    public void setBackgroundImage(JFreeChart chart) {

        Image image = null;
        try {
            image = ImageIO.read(new File("backgroundImage.jpg"));
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        PiePlot piePlot = (PiePlot) chart.getPlot();
        piePlot.setBackgroundImage(image);
        //设置背景透明度
        piePlot.setBackgroundImageAlpha(1f);
    }

    /**
     * 创建一个饼图表的数据集
     *
     * @return
     */
    private PieDataset getPieDataset() {
        DefaultPieDataset dataset = new DefaultPieDataset();
        dataset.setValue("JAVA从入门到精通(第2版)", 500);
        dataset.setValue("视频学JAVA", 800);
        dataset.setValue("JAVA全能速查宝典", 1000);
        return dataset;
    }

    public static void main(String[] args) {
        ChartDemo9 demo = new ChartDemo9();
        JFreeChart chart = demo.getJFreeChart();
        demo.setPiePoltFont(chart);
        demo.setBackgroundImage(chart);
        ChartFrame chartFrame = new ChartFrame("JFreeChart的例子", chart);
        chartFrame.pack();
        chartFrame.setVisible(true);

    }


实例153 设置背景颜色
    public JFreeChart getJFreeChart() {
        PieDataset dataset = getPieDataset();
        // locale.getISO3Language()
        JFreeChart chart = ChartFactory.createPieChart("2010.8月份销售排行", dataset,
                true, true, false);

        return chart;
    }

    /**
     * 设置饼图使用的字体
     *
     * @param chart
     */
    public void setPiePoltFont(JFreeChart chart) {

        // 图表(饼图)
        PiePlot piePlot = (PiePlot) chart.getPlot();
        piePlot.setLabelFont(new Font("宋体", Font.PLAIN, 14));
        piePlot.setLabelGenerator(new StandardPieSectionLabelGenerator("{1}"));

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.BOLD, 20));

        // 图例
        LegendTitle legendTitle = chart.getLegend();
        legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 12));

    }

    /**
     * 设置饼图背景色
     *
     * @param chart
     */
    public void setBackgroundColor(JFreeChart chart) {

        PiePlot piePlot = (PiePlot) chart.getPlot();
        piePlot.setBackgroundPaint(Color.orange);
        //piePlot.setBackgroundPaint(new Color(200, 220, 202));
    }

    /**
     * 创建一个饼图表的数据集
     *
     * @return
     */
    private PieDataset getPieDataset() {
        DefaultPieDataset dataset = new DefaultPieDataset();
        dataset.setValue("JAVA从入门到精通(第2版)", 500);
        dataset.setValue("视频学JAVA", 800);
        dataset.setValue("JAVA全能速查宝典", 1000);
        return dataset;
    }

    public static void main(String[] args) {
        ChartDemo10 pieChartDemo1 = new ChartDemo10();
        JFreeChart chart = pieChartDemo1.getJFreeChart();
        pieChartDemo1.setPiePoltFont(chart);
        pieChartDemo1.setBackgroundColor(chart);
        ChartFrame chartFrame = new ChartFrame("JFreeChart的例子", chart);
        chartFrame.pack();
        chartFrame.setVisible(true);

    }


7.3 处理图表的边框
实例154 隐藏图表边框
    public JFreeChart getJFreeChart() {
        PieDataset dataset = getPieDataset();
        // locale.getISO3Language()
        JFreeChart chart = ChartFactory.createPieChart("2010.8月份销售排行", dataset,
                true, true, false);

        return chart;
    }

    /**
     * 设置饼图使用的字体
     *
     * @param chart
     */
    public void setPiePoltFont(JFreeChart chart) {

        // 图表(饼图)
        PiePlot piePlot = (PiePlot) chart.getPlot();
        piePlot.setLabelFont(new Font("宋体", Font.PLAIN, 14));
        piePlot.setLabelGenerator(new StandardPieSectionLabelGenerator("{1}"));

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.BOLD, 20));

        // 图例
        LegendTitle legendTitle = chart.getLegend();
        legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 12));

    }

    /**
     * 设置边框
     *
     * @param chart
     */
    public void setOutline(JFreeChart chart) {

        PiePlot piePlot = (PiePlot) chart.getPlot();
        piePlot.setBackgroundPaint(Color.white);
        piePlot.setOutlineVisible(false);
        
    }

    /**
     * 创建一个饼图表的数据集
     *
     * @return
     */
    private PieDataset getPieDataset() {
        DefaultPieDataset dataset = new DefaultPieDataset();
        dataset.setValue("JAVA从入门到精通(第2版)", 500);
        dataset.setValue("视频学JAVA", 800);
        dataset.setValue("JAVA全能速查宝典", 1000);
        return dataset;
    }

    public static void main(String[] args) {
        ChartDemo11 pieChartDemo1 = new ChartDemo11();
        JFreeChart chart = pieChartDemo1.getJFreeChart();
        pieChartDemo1.setPiePoltFont(chart);
        pieChartDemo1.setOutline(chart);
        ChartFrame chartFrame = new ChartFrame("JFreeChart的例子", chart);
        chartFrame.pack();
        chartFrame.setVisible(true);

    }

实例155 图表边框笔触
    public JFreeChart getJFreeChart() {
        PieDataset dataset = getPieDataset();
        // locale.getISO3Language()
        JFreeChart chart = ChartFactory.createPieChart("2010.8月份销售排行", dataset,
                true, true, false);

        return chart;
    }

    /**
     * 设置饼图使用的字体
     *
     * @param chart
     */
    public void setPiePoltFont(JFreeChart chart) {

        // 图表(饼图)
        PiePlot piePlot = (PiePlot) chart.getPlot();
        piePlot.setLabelFont(new Font("宋体", Font.PLAIN, 14));
        piePlot.setLabelGenerator(new StandardPieSectionLabelGenerator("{1}"));

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.BOLD, 20));

        // 图例
        LegendTitle legendTitle = chart.getLegend();
        legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 12));

    }

    /**
     * 设置边框
     *
     * @param chart
     */
    public void setOutline(JFreeChart chart) {

        PiePlot piePlot = (PiePlot) chart.getPlot();
        piePlot.setBackgroundPaint(Color.white);
        Stroke stroke = new BasicStroke(5);
        piePlot.setOutlineStroke(stroke);
    }

    /**
     * 创建一个饼图表的数据集
     *
     * @return
     */
    private PieDataset getPieDataset() {
        DefaultPieDataset dataset = new DefaultPieDataset();
        dataset.setValue("JAVA从入门到精通(第2版)", 500);
        dataset.setValue("视频学JAVA", 800);
        dataset.setValue("JAVA全能速查宝典", 1000);
        return dataset;
    }

    public static void main(String[] args) {
        ChartDemo12 pieChartDemo1 = new ChartDemo12();
        JFreeChart chart = pieChartDemo1.getJFreeChart();
        pieChartDemo1.setPiePoltFont(chart);
        pieChartDemo1.setOutline(chart);
        ChartFrame chartFrame = new ChartFrame("JFreeChart的例子", chart);
        chartFrame.pack();
        chartFrame.setVisible(true);

    }

 

实例156 图表边框颜色
    public JFreeChart getJFreeChart() {
        PieDataset dataset = getPieDataset();
        // locale.getISO3Language()
        JFreeChart chart = ChartFactory.createPieChart("2010.8月份销售排行", dataset,
                true, true, false);

        return chart;
    }

    /**
     * 设置饼图使用的字体
     *
     * @param chart
     */
    public void setPiePoltFont(JFreeChart chart) {

        // 图表(饼图)
        PiePlot piePlot = (PiePlot) chart.getPlot();
        piePlot.setLabelFont(new Font("宋体", Font.PLAIN, 14));
        piePlot.setLabelGenerator(new StandardPieSectionLabelGenerator("{1}"));

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.BOLD, 20));

        // 图例
        LegendTitle legendTitle = chart.getLegend();
        legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 12));

    }

    /**
     * 设置边框
     *
     * @param chart
     */
    public void setOutline(JFreeChart chart) {

        PiePlot piePlot = (PiePlot) chart.getPlot();
        piePlot.setBackgroundPaint(Color.white);
        Stroke stroke = new BasicStroke(5);
        //设置边框笔触
        piePlot.setOutlineStroke(stroke);
        //设置边框颜色
        piePlot.setOutlinePaint(Color.orange);
    }

    /**
     * 创建一个饼图表的数据集
     *
     * @return
     */
    private PieDataset getPieDataset() {
        DefaultPieDataset dataset = new DefaultPieDataset();
        dataset.setValue("JAVA从入门到精通(第2版)", 500);
        dataset.setValue("视频学JAVA", 800);
        dataset.setValue("JAVA全能速查宝典", 1000);
        return dataset;
    }

    public static void main(String[] args) {
        ChartDemo13 pieChartDemo1 = new ChartDemo13();
        JFreeChart chart = pieChartDemo1.getJFreeChart();
        pieChartDemo1.setPiePoltFont(chart);
        pieChartDemo1.setOutline(chart);
        ChartFrame chartFrame = new ChartFrame("JFreeChart的例子", chart);
        chartFrame.pack();
        chartFrame.setVisible(true);

    }

7.4 修改图表的图示
实例157 设置图示背景色
    public JFreeChart getJFreeChart() {
        PieDataset dataset = getPieDataset();
        // locale.getISO3Language()
        JFreeChart chart = ChartFactory.createPieChart("2010.8月份销售排行", dataset,
                true, true, false);

        return chart;
    }

    /**
     * 设置饼图使用的字体
     *
     * @param chart
     */
    public void setPiePoltFont(JFreeChart chart) {

        // 图表(饼图)
        PiePlot piePlot = (PiePlot) chart.getPlot();
        piePlot.setLabelFont(new Font("宋体", Font.PLAIN, 14));
        piePlot.setLabelGenerator(new StandardPieSectionLabelGenerator("{1}"));

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.BOLD, 20));

        // 图例
        LegendTitle legendTitle = chart.getLegend();
        legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));

    }

    /**
     * 设置图示
     *
     * @param chart
     */
    public void setLegendTitle(JFreeChart chart) {

        LegendTitle legendTitle = chart.getLegend();
        legendTitle.setBackgroundPaint(Color.orange);
    }

    /**
     * 创建一个饼图表的数据集
     *
     * @return
     */
    private PieDataset getPieDataset() {
        DefaultPieDataset dataset = new DefaultPieDataset();
        dataset.setValue("JAVA从入门到精通(第2版)", 500);
        dataset.setValue("视频学JAVA", 800);
        dataset.setValue("JAVA全能速查宝典", 1000);
        return dataset;
    }

    public static void main(String[] args) {
        ChartDemo14 pieChartDemo1 = new ChartDemo14();
        JFreeChart chart = pieChartDemo1.getJFreeChart();
        pieChartDemo1.setPiePoltFont(chart);
        pieChartDemo1.setLegendTitle(chart);
        ChartFrame chartFrame = new ChartFrame("JFreeChart的例子", chart);
        chartFrame.pack();
        chartFrame.setVisible(true);

    }


实例158 设置图示边框
    public JFreeChart getJFreeChart() {
        PieDataset dataset = getPieDataset();
        // locale.getISO3Language()
        JFreeChart chart = ChartFactory.createPieChart("2010.8月份销售排行", dataset,
                true, true, false);

        return chart;
    }

    /**
     * 设置饼图使用的字体
     *
     * @param chart
     */
    public void setPiePoltFont(JFreeChart chart) {

        // 图表(饼图)
        PiePlot piePlot = (PiePlot) chart.getPlot();
        piePlot.setLabelFont(new Font("宋体", Font.PLAIN, 14));
        piePlot.setLabelGenerator(new StandardPieSectionLabelGenerator("{1}"));

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.BOLD, 20));

        // 图例
        LegendTitle legendTitle = chart.getLegend();
        legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));

    }

    /**
     * 设置图示
     *
     * @param chart
     */
    public void setLegendTitle(JFreeChart chart) {

        LegendTitle legendTitle = chart.getLegend();
        legendTitle.setBackgroundPaint(Color.orange);
        //设置图示边框
        legendTitle.setBorder(0, 0, 0, 0);
    }

    /**
     * 创建一个饼图表的数据集
     *
     * @return
     */
    private PieDataset getPieDataset() {
        DefaultPieDataset dataset = new DefaultPieDataset();
        dataset.setValue("JAVA从入门到精通(第2版)", 500);
        dataset.setValue("视频学JAVA", 800);
        dataset.setValue("JAVA全能速查宝典", 1000);
        return dataset;
    }

    public static void main(String[] args) {
        ChartDemo15 pieChartDemo1 = new ChartDemo15();
        JFreeChart chart = pieChartDemo1.getJFreeChart();
        pieChartDemo1.setPiePoltFont(chart);
        pieChartDemo1.setLegendTitle(chart);
        ChartFrame chartFrame = new ChartFrame("JFreeChart的例子", chart);
        chartFrame.pack();
        chartFrame.setVisible(true);

    }

实例159 设置图示边框颜色
    public JFreeChart getJFreeChart() {
        PieDataset dataset = getPieDataset();
        JFreeChart chart = ChartFactory.createPieChart("2010.8月份销售排行", dataset,
                true, true, false);

        return chart;
    }

    /**
     * 设置饼图使用的字体
     *
     * @param chart
     */
    public void setPiePoltFont(JFreeChart chart) {

        // 图表(饼图)
        PiePlot piePlot = (PiePlot) chart.getPlot();
        piePlot.setLabelFont(new Font("宋体", Font.PLAIN, 14));
        piePlot.setLabelGenerator(new StandardPieSectionLabelGenerator("{1}"));

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.BOLD, 20));

        // 图例
        LegendTitle legendTitle = chart.getLegend();
        legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));

    }

    /**
     * 设置图示
     *
     * @param chart
     */
    public void setLegendTitle(JFreeChart chart) {

        LegendTitle legendTitle = chart.getLegend();
        BlockFrame blockFrame = new BlockBorder(2,2,2,2,Color.blue);
        legendTitle.setFrame(blockFrame);
        
    }

    /**
     * 创建一个饼图表的数据集
     *
     * @return
     */
    private PieDataset getPieDataset() {
        DefaultPieDataset dataset = new DefaultPieDataset();
        dataset.setValue("JAVA从入门到精通(第2版)", 500);
        dataset.setValue("视频学JAVA", 800);
        dataset.setValue("JAVA全能速查宝典", 1000);
        return dataset;
    }

    public static void main(String[] args) {
        ChartDemo16 pieChartDemo1 = new ChartDemo16();
        JFreeChart chart = pieChartDemo1.getJFreeChart();
        pieChartDemo1.setPiePoltFont(chart);
        pieChartDemo1.setLegendTitle(chart);
        ChartFrame chartFrame = new ChartFrame("JFreeChart的例子", chart);
        chartFrame.pack();
        chartFrame.setVisible(true);

    }

实例160 设置图示边缘间距
    public JFreeChart getJFreeChart() {
        PieDataset dataset = getPieDataset();
        // locale.getISO3Language()
        JFreeChart chart = ChartFactory.createPieChart("2010.8月份销售排行", dataset,
                true, true, false);

        return chart;
    }

    /**
     * 设置饼图使用的字体
     *
     * @param chart
     */
    public void setPiePoltFont(JFreeChart chart) {

        // 图表(饼图)
        PiePlot piePlot = (PiePlot) chart.getPlot();
        piePlot.setLabelFont(new Font("宋体", Font.PLAIN, 14));
        piePlot.setLabelGenerator(new StandardPieSectionLabelGenerator("{1}"));

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.BOLD, 20));

        // 图例
        LegendTitle legendTitle = chart.getLegend();
        legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));

    }

    /**
     * 设置图示
     *
     * @param chart
     */
    public void setLegendTitle(JFreeChart chart) {

        LegendTitle legendTitle = chart.getLegend();
        legendTitle.setMargin(0, 10, 10, 246);

    }

    /**
     * 创建一个饼图表的数据集
     *
     * @return
     */
    private PieDataset getPieDataset() {
        DefaultPieDataset dataset = new DefaultPieDataset();
        dataset.setValue("JAVA从入门到精通(第2版)", 500);
        dataset.setValue("视频学JAVA", 800);
        dataset.setValue("JAVA全能速查宝典", 1000);
        return dataset;
    }

    public static void main(String[] args) {
        ChartDemo17 pieChartDemo1 = new ChartDemo17();
        JFreeChart chart = pieChartDemo1.getJFreeChart();
        pieChartDemo1.setPiePoltFont(chart);
        pieChartDemo1.setLegendTitle(chart);
        ChartFrame chartFrame = new ChartFrame("JFreeChart的例子", chart);
        chartFrame.pack();
        chartFrame.setVisible(true);

    }

实例161 设置图示字体颜色
    public JFreeChart getJFreeChart() {
        PieDataset dataset = getPieDataset();
        // locale.getISO3Language()
        JFreeChart chart = ChartFactory.createPieChart("2010.8月份销售排行", dataset,
                true, true, false);

        return chart;
    }

    /**
     * 设置饼图使用的字体
     *
     * @param chart
     */
    public void setPiePoltFont(JFreeChart chart) {

        // 图表(饼图)
        PiePlot piePlot = (PiePlot) chart.getPlot();
        piePlot.setLabelFont(new Font("宋体", Font.PLAIN, 14));
        piePlot.setLabelGenerator(new StandardPieSectionLabelGenerator("{1}"));

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.BOLD, 20));

        // 图例
        LegendTitle legendTitle = chart.getLegend();
        legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));

    }

    /**
     * 设置图示
     *
     * @param chart
     */
    public void setLegendTitle(JFreeChart chart) {

        LegendTitle legendTitle = chart.getLegend();
        legendTitle.setItemPaint(Color.MAGENTA);

    }

    /**
     * 创建一个饼图表的数据集
     *
     * @return
     */
    private PieDataset getPieDataset() {
        DefaultPieDataset dataset = new DefaultPieDataset();
        dataset.setValue("JAVA从入门到精通(第2版)", 500);
        dataset.setValue("视频学JAVA", 800);
        dataset.setValue("JAVA全能速查宝典", 1000);
        return dataset;
    }

    public static void main(String[] args) {
        ChartDemo18 pieChartDemo1 = new ChartDemo18();
        JFreeChart chart = pieChartDemo1.getJFreeChart();
        pieChartDemo1.setPiePoltFont(chart);
        pieChartDemo1.setLegendTitle(chart);
        ChartFrame chartFrame = new ChartFrame("JFreeChart的例子", chart);
        chartFrame.pack();
        chartFrame.setVisible(true);

    }

实例162 设置图示位置
    public JFreeChart getJFreeChart() {
        PieDataset dataset = getPieDataset();
        // locale.getISO3Language()
        JFreeChart chart = ChartFactory.createPieChart("2010.8月份销售排行", dataset,
                true, true, false);

        return chart;
    }

    /**
     * 设置饼图使用的字体
     *
     * @param chart
     */
    public void setPiePoltFont(JFreeChart chart) {

        // 图表(饼图)
        PiePlot piePlot = (PiePlot) chart.getPlot();
        piePlot.setLabelFont(new Font("宋体", Font.PLAIN, 14));
        piePlot.setLabelGenerator(new StandardPieSectionLabelGenerator("{1}"));

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.BOLD, 20));

        // 图例
        LegendTitle legendTitle = chart.getLegend();
        legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));

    }

    /**
     * 设置图示
     *
     * @param chart
     */
    public void setLegendTitle(JFreeChart chart) {
        LegendTitle legendTitle = chart.getLegend();
        //设置图示位置
        legendTitle.setPosition(RectangleEdge.RIGHT);
    }

    /**
     * 创建一个饼图表的数据集
     *
     * @return
     */
    private PieDataset getPieDataset() {
        DefaultPieDataset dataset = new DefaultPieDataset();
        dataset.setValue("JAVA从入门到精通(第2版)", 500);
        dataset.setValue("视频学JAVA", 800);
        dataset.setValue("JAVA全能速查宝典", 1000);
        return dataset;
    }

    public static void main(String[] args) {
        ChartDemo19 pieChartDemo1 = new ChartDemo19();
        JFreeChart chart = pieChartDemo1.getJFreeChart();
        pieChartDemo1.setPiePoltFont(chart);
        pieChartDemo1.setLegendTitle(chart);
        ChartFrame chartFrame = new ChartFrame("JFreeChart的例子", chart);
        chartFrame.pack();
        chartFrame.setVisible(true);

    }

第8章 基础图表技术
8.1 普通饼图
实例163 分离饼图
    public PieDemo1(String title) {
        super(title);
    }

    /**
     * 创建一个饼图表的数据集
     *
     * @return
     */
    private PieDataset getPieDataset() {
        DefaultPieDataset dataset = new DefaultPieDataset();
        dataset.setValue("JAVA从入门到精通(第2版)", 500);
        dataset.setValue("视频学JAVA", 800);
        dataset.setValue("JAVA全能速查宝典", 1000);
        dataset.setValue("Java范例完全自学手册(1DVD)", 400);
        dataset.setValue("Java开发典型模块大全", 750);
        return dataset;
    }

    /**
     * 生成JFreeChart
     *
     * @return
     */
    private JFreeChart getJFreeChart() {
        PieDataset dataset = getPieDataset();
        JFreeChart chart = ChartFactory.createPieChart("2010.8月份销售排行", dataset,true, true, false);
        setPiePoltFont(chart);
        return chart;
    }

    /**
     * 设置饼图使用的字体
     *
     * @param chart
     */
    protected void setPiePoltFont(JFreeChart chart) {

        // 图表(饼图)
        PiePlot piePlot = (PiePlot) chart.getPlot();
        piePlot.setLabelFont(new Font("宋体", Font.PLAIN, 14));
        piePlot.setLabelGenerator(new StandardPieSectionLabelGenerator(
                "{0}:{1}"));

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.BOLD, 20));

        // 图例
        LegendTitle legendTitle = chart.getLegend();
        legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));

    }

    /**
     * 设置Pie
     *
     * @param chart
     */
    public void createPiePlot() {
        JFreeChart chart = getJFreeChart();
        PiePlot piePlot = (PiePlot) chart.getPlot();
        // 需要分离的图书
        piePlot.setExplodePercent("Java范例完全自学手册(1DVD)", 0.1);
        piePlot.setExplodePercent("JAVA全能速查宝典", 0.1);
        // 把JFreeChart面板保存在窗体里
        setContentPane(new ChartPanel(chart));
        
    }

    public static void main(String[] args) {
        PieDemo1 pieChartDemo1 = new PieDemo1("饼图实例");
        pieChartDemo1.createPiePlot();
        pieChartDemo1.pack();
        // 把窗体显示到显示器中央
        RefineryUtilities.centerFrameOnScreen(pieChartDemo1);
        pieChartDemo1.setVisible(true);

    }


实例164 椭圆形饼图
    public PieDemo2(String title) {
        super(title);
    }

    /**
     * 创建一个饼图表的数据集
     *
     * @return
     */
    private PieDataset getPieDataset() {
        DefaultPieDataset dataset = new DefaultPieDataset();
        dataset.setValue("JAVA从入门到精通(第2版)", 500);
        dataset.setValue("视频学JAVA", 800);
        dataset.setValue("JAVA全能速查宝典", 1000);
        dataset.setValue("Java范例完全自学手册(1DVD)", 400);
        dataset.setValue("Java开发典型模块大全", 750);
        return dataset;
    }

    /**
     * 生成JFreeChart
     *
     * @return
     */
    private JFreeChart getJFreeChart() {
        PieDataset dataset = getPieDataset();
        JFreeChart chart = ChartFactory.createPieChart("2010.8月份销售排行", dataset,
                true, true, false);
        setPiePoltFont(chart);
        return chart;
    }

    /**
     * 设置饼图使用的字体
     *
     * @param chart
     */
    protected void setPiePoltFont(JFreeChart chart) {

        // 图表(饼图)
        PiePlot piePlot = (PiePlot) chart.getPlot();
        piePlot.setLabelFont(new Font("宋体", Font.PLAIN, 14));
        piePlot.setLabelGenerator(new StandardPieSectionLabelGenerator(
                "{0}:{1}"));

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.BOLD, 20));

        // 图例
        LegendTitle legendTitle = chart.getLegend();
        legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));

    }

    /**
     * 设置Pie
     *
     * @param chart
     */
    public void createPiePlot() {
        JFreeChart chart = getJFreeChart();
        PiePlot piePlot = (PiePlot) chart.getPlot();
        //是否椭圆
        piePlot.setCircular(false);
        // 把JFreeChart面板保存在窗体里
        setContentPane(new ChartPanel(chart));        
    }

    public static void main(String[] args) {
        PieDemo2 demo = new PieDemo2("饼图实例");
        demo.createPiePlot();
        demo.pack();
        // 把窗体显示到显示器中央
        RefineryUtilities.centerFrameOnScreen(demo);
        demo.setVisible(true);

    }


实例165 饼图的阴影
    public PieDemo3(String title) {
        super(title);
    }

    /**
     * 创建一个饼图表的数据集
     *
     * @return
     */
    private PieDataset getPieDataset() {
        DefaultPieDataset dataset = new DefaultPieDataset();
        dataset.setValue("JAVA从入门到精通(第2版)", 500);
        dataset.setValue("视频学JAVA", 800);
        dataset.setValue("JAVA全能速查宝典", 1000);
        dataset.setValue("Java范例完全自学手册(1DVD)", 400);
        dataset.setValue("Java开发典型模块大全", 750);
        return dataset;
    }

    /**
     * 生成JFreeChart
     *
     * @return
     */
    private JFreeChart getJFreeChart() {
        PieDataset dataset = getPieDataset();
        JFreeChart chart = ChartFactory.createPieChart("2010.8月份销售排行", dataset,
                true, true, false);
        setPiePoltFont(chart);
        return chart;
    }

    /**
     * 设置饼图使用的字体
     *
     * @param chart
     */
    protected void setPiePoltFont(JFreeChart chart) {

        // 图表(饼图)
        PiePlot piePlot = (PiePlot) chart.getPlot();
        piePlot.setLabelFont(new Font("宋体", Font.PLAIN, 14));
        piePlot.setLabelGenerator(new StandardPieSectionLabelGenerator(
                "{0}:{1}"));

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.BOLD, 20));

        // 图例
        LegendTitle legendTitle = chart.getLegend();
        legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));

    }

    /**
     * 设置Pie
     *
     * @param chart
     */
    public void createPiePlot() {
        JFreeChart chart = getJFreeChart();
        PiePlot piePlot = (PiePlot) chart.getPlot();
        //设置阴影效果
        piePlot.setShadowXOffset(20);
        piePlot.setShadowYOffset(20);

        // 把JFreeChart面板保存在窗体里
        setContentPane(new ChartPanel(chart));

    }

    public static void main(String[] args) {
        PieDemo3 demo = new PieDemo3("饼图实例");
        demo.createPiePlot();
        demo.pack();
        // 把窗体显示到显示器中央
        RefineryUtilities.centerFrameOnScreen(demo);
        demo.setVisible(true);

    }


实例166 饼图的分类边框颜色
    public PieDemo402(String title) {
        super(title);
    }

    /**
     * 创建一个饼图表的数据集
     *
     * @return
     */
    private PieDataset getPieDataset() {
        DefaultPieDataset dataset = new DefaultPieDataset();
        dataset.setValue("JAVA从入门到精通(第2版)", 500);
        dataset.setValue("视频学JAVA", 800);
        dataset.setValue("JAVA全能速查宝典", 1000);
        dataset.setValue("Java范例完全自学手册(1DVD)", 400);
        dataset.setValue("Java开发典型模块大全", 750);
        return dataset;
    }

    /**
     * 生成JFreeChart
     *
     * @return
     */
    private JFreeChart getJFreeChart() {
        PieDataset dataset = getPieDataset();
        JFreeChart chart = ChartFactory.createPieChart("2010.8月份销售排行", dataset,
                true, true, false);
        setPiePoltFont(chart);
        return chart;
    }

    /**
     * 设置饼图使用的字体
     *
     * @param chart
     */
    protected void setPiePoltFont(JFreeChart chart) {

        // 图表(饼图)
        PiePlot piePlot = (PiePlot) chart.getPlot();
        piePlot.setLabelFont(new Font("宋体", Font.PLAIN, 14));
        piePlot.setLabelGenerator(new StandardPieSectionLabelGenerator(
                "{0}:{1}"));

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.BOLD, 20));

        // 图例
        LegendTitle legendTitle = chart.getLegend();
        legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));

    }

    /**
     * 设置Pie
     *
     * @param chart
     */
    public void createPiePlot() {
        JFreeChart chart = getJFreeChart();
        PiePlot piePlot = (PiePlot) chart.getPlot();
        
        //设置饼图边框的颜色
        piePlot.setSectionOutlinePaint("JAVA从入门到精通(第2版)", Color.black);
        piePlot.setSectionOutlinePaint("视频学JAVA", Color.black);
        piePlot.setSectionOutlinePaint("JAVA全能速查宝典", Color.black);
        piePlot.setSectionOutlinePaint("Java范例完全自学手册(1DVD)", Color.black);
        piePlot.setSectionOutlinePaint("Java开发典型模块大全", Color.black);

        // 把JFreeChart面板保存在窗体里
        setContentPane(new ChartPanel(chart));

    }

    public static void main(String[] args) {
        PieDemo402 pieChartDemo1 = new PieDemo402("饼图实例");
        pieChartDemo1.createPiePlot();
        pieChartDemo1.pack();
        // 把窗体显示到显示器中央
        RefineryUtilities.centerFrameOnScreen(pieChartDemo1);
        pieChartDemo1.setVisible(true);

    }


实例167 加粗饼图分类边框
    public PieDemo403(String title) {
        super(title);
    }

    /**
     * 创建一个饼图表的数据集
     *
     * @return
     */
    private PieDataset getPieDataset() {
        DefaultPieDataset dataset = new DefaultPieDataset();
        dataset.setValue("JAVA从入门到精通(第2版)", 500);
        dataset.setValue("视频学JAVA", 800);
        dataset.setValue("JAVA全能速查宝典", 1000);
        dataset.setValue("Java范例完全自学手册(1DVD)", 400);
        dataset.setValue("Java开发典型模块大全", 750);
        return dataset;
    }

    /**
     * 生成JFreeChart
     *
     * @return
     */
    private JFreeChart getJFreeChart() {
        PieDataset dataset = getPieDataset();
        JFreeChart chart = ChartFactory.createPieChart("2010.8月份销售排行", dataset,
                true, true, false);
        setPiePoltFont(chart);
        return chart;
    }

    /**
     * 设置饼图使用的字体
     *
     * @param chart
     */
    protected void setPiePoltFont(JFreeChart chart) {

        // 图表(饼图)
        PiePlot piePlot = (PiePlot) chart.getPlot();
        piePlot.setLabelFont(new Font("宋体", Font.PLAIN, 14));
        piePlot.setLabelGenerator(new StandardPieSectionLabelGenerator(
                "{0}:{1}"));

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.BOLD, 20));

        // 图例
        LegendTitle legendTitle = chart.getLegend();
        legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));

    }

    /**
     * 设置Pie
     *
     * @param chart
     */
    public void createPiePlot() {
        JFreeChart chart = getJFreeChart();
        PiePlot piePlot = (PiePlot) chart.getPlot();
        
        //设置饼图边框笔触
        piePlot.setSectionOutlineStroke("JAVA从入门到精通(第2版)",new BasicStroke(3f));
        piePlot.setSectionOutlineStroke("视频学JAVA", new BasicStroke(3f));
        piePlot.setSectionOutlineStroke("JAVA全能速查宝典", new BasicStroke(3f));
        piePlot.setSectionOutlineStroke("Java范例完全自学手册(1DVD)", new BasicStroke(3f));
        piePlot.setSectionOutlineStroke("Java开发典型模块大全", new BasicStroke(3f));

        // 把JFreeChart面板保存在窗体里
        setContentPane(new ChartPanel(chart));

    }

    public static void main(String[] args) {
        PieDemo403 pieChartDemo1 = new PieDemo403("饼图实例");
        pieChartDemo1.createPiePlot();
        pieChartDemo1.pack();
        // 把窗体显示到显示器中央
        RefineryUtilities.centerFrameOnScreen(pieChartDemo1);
        pieChartDemo1.setVisible(true);

    }


实例168 设置饼图颜色
    public PieDemo404(String title) {
        super(title);
    }

    /**
     * 创建一个饼图表的数据集
     *
     * @return
     */
    private PieDataset getPieDataset() {
        DefaultPieDataset dataset = new DefaultPieDataset();
        dataset.setValue("JAVA从入门到精通(第2版)", 500);
        dataset.setValue("视频学JAVA", 800);
        dataset.setValue("JAVA全能速查宝典", 1000);
        dataset.setValue("Java范例完全自学手册(1DVD)", 400);
        dataset.setValue("Java开发典型模块大全", 750);
        return dataset;
    }

    /**
     * 生成JFreeChart
     *
     * @return
     */
    private JFreeChart getJFreeChart() {
        PieDataset dataset = getPieDataset();
        JFreeChart chart = ChartFactory.createPieChart("2010.8月份销售排行", dataset,
                true, true, false);
        setPiePoltFont(chart);
        return chart;
    }

    /**
     * 设置饼图使用的字体
     *
     * @param chart
     */
    protected void setPiePoltFont(JFreeChart chart) {

        // 图表(饼图)
        PiePlot piePlot = (PiePlot) chart.getPlot();
        piePlot.setLabelFont(new Font("宋体", Font.PLAIN, 14));
        piePlot.setLabelGenerator(new StandardPieSectionLabelGenerator(
                "{0}:{1}"));

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.BOLD, 20));

        // 图例
        LegendTitle legendTitle = chart.getLegend();
        legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));

    }

    /**
     * 设置Pie
     *
     * @param chart
     */
    public void createPiePlot() {
        JFreeChart chart = getJFreeChart();
        PiePlot piePlot = (PiePlot) chart.getPlot();
        
        //设置饼图的颜色
        piePlot.setSectionPaint("JAVA从入门到精通(第2版)", Color.black);
        piePlot.setSectionPaint("视频学JAVA", Color.blue);
        piePlot.setSectionPaint("JAVA全能速查宝典", Color.cyan);
        piePlot.setSectionPaint("Java范例完全自学手册(1DVD)", Color.gray);
        piePlot.setSectionPaint("Java开发典型模块大全", Color.orange);

        // 把JFreeChart面板保存在窗体里
        setContentPane(new ChartPanel(chart));

    }

    public static void main(String[] args) {
        PieDemo404 pieChartDemo1 = new PieDemo404("饼图实例");
        pieChartDemo1.createPiePlot();
        pieChartDemo1.pack();
        // 把窗体显示到显示器中央
        RefineryUtilities.centerFrameOnScreen(pieChartDemo1);
        pieChartDemo1.setVisible(true);

    }

实例169 饼图旋转角度
    public PieDemo4(String title) {
        super(title);
    }

    /**
     * 创建一个饼图表的数据集
     *
     * @return
     */
    private PieDataset getPieDataset() {
        DefaultPieDataset dataset = new DefaultPieDataset();
        dataset.setValue("JAVA从入门到精通(第2版)", 500);
        dataset.setValue("视频学JAVA", 800);
        dataset.setValue("JAVA全能速查宝典", 1000);
        dataset.setValue("Java范例完全自学手册(1DVD)", 400);
        dataset.setValue("Java开发典型模块大全", 750);
        return dataset;
    }

    /**
     * 生成JFreeChart
     *
     * @return
     */
    private JFreeChart getJFreeChart() {
        PieDataset dataset = getPieDataset();
        JFreeChart chart = ChartFactory.createPieChart("2010.8月份销售排行", dataset,
                true, true, false);
        setPiePoltFont(chart);
        return chart;
    }

    /**
     * 设置饼图使用的字体
     *
     * @param chart
     */
    protected void setPiePoltFont(JFreeChart chart) {

        // 图表(饼图)
        PiePlot piePlot = (PiePlot) chart.getPlot();
        piePlot.setLabelFont(new Font("宋体", Font.PLAIN, 14));
        piePlot.setLabelGenerator(new StandardPieSectionLabelGenerator(
                "{0}:{1}"));

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.BOLD, 20));

        // 图例
        LegendTitle legendTitle = chart.getLegend();
        legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));

    }

    /**
     * 设置Pie
     *
     * @param chart
     */
    public void createPiePlot() {
        JFreeChart chart = getJFreeChart();
        PiePlot piePlot = (PiePlot) chart.getPlot();
        //设置旋转角度  
        piePlot.setStartAngle(120);

        // 把JFreeChart面板保存在窗体里
        setContentPane(new ChartPanel(chart));

    }

    public static void main(String[] args) {
        PieDemo4 pieChartDemo1 = new PieDemo4("饼图实例");
        pieChartDemo1.createPiePlot();
        pieChartDemo1.pack();
        // 把窗体显示到显示器中央
        RefineryUtilities.centerFrameOnScreen(pieChartDemo1);
        pieChartDemo1.setVisible(true);

    }


实例170 饼图旋转顺序
    public PieDemo401(String title) {
        super(title);
    }

    /**
     * 创建一个饼图表的数据集
     *
     * @return
     */
    private PieDataset getPieDataset() {
        DefaultPieDataset dataset = new DefaultPieDataset();
        dataset.setValue("JAVA从入门到精通(第2版)", 500);
        dataset.setValue("视频学JAVA", 800);
        dataset.setValue("JAVA全能速查宝典", 1000);
        dataset.setValue("Java范例完全自学手册(1DVD)", 400);
        dataset.setValue("Java开发典型模块大全", 750);
        return dataset;
    }

    /**
     * 生成JFreeChart
     *
     * @return
     */
    private JFreeChart getJFreeChart() {
        PieDataset dataset = getPieDataset();
        JFreeChart chart = ChartFactory.createPieChart("2010.8月份销售排行", dataset,
                true, true, false);
        setPiePoltFont(chart);
        return chart;
    }

    /**
     * 设置饼图使用的字体
     *
     * @param chart
     */
    protected void setPiePoltFont(JFreeChart chart) {

        // 图表(饼图)
        PiePlot piePlot = (PiePlot) chart.getPlot();
        piePlot.setLabelFont(new Font("宋体", Font.PLAIN, 14));
        piePlot.setLabelGenerator(new StandardPieSectionLabelGenerator(
                "{0}:{1}"));

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.BOLD, 20));

        // 图例
        LegendTitle legendTitle = chart.getLegend();
        legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));

    }

    /**
     * 设置Pie
     *
     * @param chart
     */
    public void createPiePlot() {
        JFreeChart chart = getJFreeChart();
        PiePlot piePlot = (PiePlot) chart.getPlot();
        //设置旋转角度  
        piePlot.setStartAngle(90);
        //设置逆时针
        piePlot.setDirection(Rotation.ANTICLOCKWISE);

        // 把JFreeChart面板保存在窗体里
        setContentPane(new ChartPanel(chart));

    }

    public static void main(String[] args) {
        PieDemo401 pieChartDemo1 = new PieDemo401("饼图实例");
        pieChartDemo1.createPiePlot();
        pieChartDemo1.pack();
        // 把窗体显示到显示器中央
        RefineryUtilities.centerFrameOnScreen(pieChartDemo1);
        pieChartDemo1.setVisible(true);

    }


实例171 隐藏分类标签连接线
    public PieDemo5(String title) {
        super(title);
    }

    /**
     * 创建一个饼图表的数据集 把数据添加到数据集中
     *
     * @return
     */
    private PieDataset getPieDataset() {
        DefaultPieDataset dataset = new DefaultPieDataset();

        dataset.setValue("JAVA从入门到精通(第2版)", 500);
        dataset.setValue("视频学JAVA", 800);
        dataset.setValue("JAVA全能速查宝典", 1000);
        dataset.setValue("Java范例完全自学手册(1DVD)", 400);
        dataset.setValue("Java开发典型模块大全", 750);
        return dataset;
    }

    /**
     * 获取数据集,生成JFreeChart,
     *
     * @return
     */
    private JFreeChart getJFreeChart() {
        PieDataset dataset = getPieDataset();
        JFreeChart chart = ChartFactory.createPieChart("2010.8月份销售排行", dataset,
                true, true, false);
        // 设置饼图使用的字体
        setPiePoltFont(chart);
        return chart;
    }

    /**
     * 设置饼图使用的字体
     *
     * @param chart
     */
    protected void setPiePoltFont(JFreeChart chart) {

        // 分类标签字体和显示
        PiePlot piePlot = (PiePlot) chart.getPlot();
        piePlot.setLabelFont(new Font("宋体", Font.PLAIN, 14));
        piePlot.setLabelGenerator(new StandardPieSectionLabelGenerator("{1}"));

        // 标题字体
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.BOLD, 20));

        // 图例字体
        LegendTitle legendTitle = chart.getLegend();
        legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));

    }

    /**
     * 设置Pie
     *
     * @param chart
     */
    public void createPiePlot() {
        JFreeChart chart = getJFreeChart();
        PiePlot piePlot = (PiePlot) chart.getPlot();
        // 设置标签模式
        piePlot.setSimpleLabels(true);
        // 把JFreeChart对象保存到面板中
        setContentPane(new ChartPanel(chart));

    }

    public static void main(String[] args) {
        PieDemo5 pieChartDemo1 = new PieDemo5("饼图实例");
        //创建图形
        pieChartDemo1.createPiePlot();
        //生成图形
        pieChartDemo1.pack();
        //把窗体显示到显示器中
        RefineryUtilities.centerFrameOnScreen(pieChartDemo1);
        //设置显示图形状态
        pieChartDemo1.setVisible(true);

    }


8.2 3D饼图
实例172 创建3D饼图
    public PieDemo6(String title) {
        super(title);
    }

    /**
     * 创建一个饼图表的数据集 把数据添加到数据集中
     *
     * @return
     */
    private PieDataset getPieDataset() {
        DefaultPieDataset dataset = new DefaultPieDataset();

        dataset.setValue("JAVA从入门到精通(第2版)", 500);
        dataset.setValue("视频学JAVA", 800);
        dataset.setValue("JAVA全能速查宝典", 1000);
        dataset.setValue("Java范例完全自学手册(1DVD)", 400);
        dataset.setValue("Java开发典型模块大全", 750);
        return dataset;
    }

    /**
     * 获取数据集,生成JFreeChart,
     *
     * @return
     */
    private JFreeChart getJFreeChart() {
        PieDataset dataset = getPieDataset();
        JFreeChart chart = ChartFactory.createPieChart3D("2010.8月份销售排行", dataset,
                true, true, false);
        // 设置饼图使用的字体
        setPiePoltFont(chart);
        return chart;
    }

    /**
     * 设置饼图使用的字体
     *
     * @param chart
     */
    protected void setPiePoltFont(JFreeChart chart) {

        // 分类标签字体和显示
        PiePlot piePlot = (PiePlot) chart.getPlot();
        piePlot.setLabelFont(new Font("宋体", Font.PLAIN, 14));
        piePlot.setLabelGenerator(new StandardPieSectionLabelGenerator("{0}:{1}"));

        // 标题字体
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.BOLD, 20));

        // 图例字体
        LegendTitle legendTitle = chart.getLegend();
        legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));

    }

    /**
     * 设置Pie
     *
     * @param chart
     */
    public void createPiePlot() {
        JFreeChart chart = getJFreeChart();

        // 把JFreeChart对象保存到面板中
        setContentPane(new ChartPanel(chart));

    }

    public static void main(String[] args) {
        PieDemo6 pieChartDemo1 = new PieDemo6("饼图实例");
        //创建图形
        pieChartDemo1.createPiePlot();
        //生成图形
        pieChartDemo1.pack();
        //把窗体显示到显示器中
        RefineryUtilities.centerFrameOnScreen(pieChartDemo1);
        //设置显示图形状态
        pieChartDemo1.setVisible(true);

    }


实例173 3D饼图透明度
    public PieDemo7(String title) {
        super(title);
    }

    /**
     * 创建一个饼图表的数据集 把数据添加到数据集中
     *
     * @return
     */
    private PieDataset getPieDataset() {
        DefaultPieDataset dataset = new DefaultPieDataset();

        dataset.setValue("JAVA从入门到精通(第2版)", 500);
        dataset.setValue("视频学JAVA", 800);
        dataset.setValue("JAVA全能速查宝典", 1000);
        dataset.setValue("Java范例完全自学手册(1DVD)", 400);
        dataset.setValue("Java开发典型模块大全", 750);
        return dataset;
    }

    /**
     * 获取数据集,生成JFreeChart,
     *
     * @return
     */
    private JFreeChart getJFreeChart() {
        PieDataset dataset = getPieDataset();
        JFreeChart chart = ChartFactory.createPieChart3D("2010.8月份销售排行",
                dataset, true, true, false);
        // 设置饼图使用的字体
        setPiePoltFont(chart);
        return chart;
    }

    /**
     * 设置饼图使用的字体
     *
     * @param chart
     */
    protected void setPiePoltFont(JFreeChart chart) {

        // 分类标签字体和显示
        PiePlot piePlot = (PiePlot) chart.getPlot();
        piePlot.setLabelFont(new Font("宋体", Font.PLAIN, 14));
        piePlot.setLabelGenerator(new StandardPieSectionLabelGenerator(
                "{0}:{1}"));

        // 标题字体
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.BOLD, 20));

        // 图例字体
        LegendTitle legendTitle = chart.getLegend();
        legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));

    }

    /**
     * 设置Pie
     *
     * @param chart
     */
    public void createPiePlot() {
        JFreeChart chart = getJFreeChart();
        PiePlot plot  = (PiePlot)chart.getPlot();
        //设置饼图透明度
        plot.setForegroundAlpha(0.7f);
        
        // 把JFreeChart对象保存到面板中
        setContentPane(new ChartPanel(chart));

    }

    public static void main(String[] args) {
        PieDemo7 pieChartDemo1 = new PieDemo7("饼图实例");
        // 创建图形
        pieChartDemo1.createPiePlot();
        // 生成图形
        pieChartDemo1.pack();
        // 把窗体显示到显示器中
        RefineryUtilities.centerFrameOnScreen(pieChartDemo1);
        // 设置显示图形状态
        pieChartDemo1.setVisible(true);

    }


实例174 3D饼图的Z轴
    public PieDemo8(String title) {
        super(title);
    }

    /**
     * 创建一个饼图表的数据集 把数据添加到数据集中
     *
     * @return
     */
    private PieDataset getPieDataset() {
        DefaultPieDataset dataset = new DefaultPieDataset();

        dataset.setValue("JAVA从入门到精通(第2版)", 500);
        dataset.setValue("视频学JAVA", 800);
        dataset.setValue("JAVA全能速查宝典", 1000);
        dataset.setValue("Java范例完全自学手册(1DVD)", 400);
        dataset.setValue("Java开发典型模块大全", 750);
        return dataset;
    }

    /**
     * 获取数据集,生成JFreeChart,
     *
     * @return
     */
    private JFreeChart getJFreeChart() {
        PieDataset dataset = getPieDataset();
        JFreeChart chart = ChartFactory.createPieChart3D("2010.8月份销售排行",
                dataset, true, true, false);
        // 设置饼图使用的字体
        setPiePoltFont(chart);
        return chart;
    }

    /**
     * 设置饼图使用的字体
     *
     * @param chart
     */
    protected void setPiePoltFont(JFreeChart chart) {

        // 分类标签字体和显示
        PiePlot piePlot = (PiePlot) chart.getPlot();
        piePlot.setLabelFont(new Font("宋体", Font.PLAIN, 14));
        piePlot.setLabelGenerator(new StandardPieSectionLabelGenerator(
                "{0}:{1}"));

        // 标题字体
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.BOLD, 20));

        // 图例字体
        LegendTitle legendTitle = chart.getLegend();
        legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));

    }

    /**
     * 设置Pie
     *
     * @param chart
     */
    public void createPiePlot() {
        JFreeChart chart = getJFreeChart();
        PiePlot3D plot  = (PiePlot3D)chart.getPlot();
        //设置3D饼图Z
        plot.setDepthFactor(0.3f);
        //plot.setDarkerSides(true);
        // 把JFreeChart对象保存到面板中
        setContentPane(new ChartPanel(chart));

    }

    public static void main(String[] args) {
        PieDemo8 pieChartDemo1 = new PieDemo8("饼图实例");
        // 创建图形
        pieChartDemo1.createPiePlot();
        // 生成图形
        pieChartDemo1.pack();
        // 把窗体显示到显示器中
        RefineryUtilities.centerFrameOnScreen(pieChartDemo1);
        // 设置显示图形状态
        pieChartDemo1.setVisible(true);

    }


实例175 逆时针旋转3D饼图
PieDemo9.java
    public PieDemo9(String title) {
        super(title);
    }

    /**
     * 创建一个饼图表的数据集 把数据添加到数据集中
     *
     * @return
     */
    private PieDataset getPieDataset() {
        DefaultPieDataset dataset = new DefaultPieDataset();

        dataset.setValue("JAVA从入门到精通(第2版)", 500);
        dataset.setValue("视频学JAVA", 800);
        dataset.setValue("JAVA全能速查宝典", 1000);
        dataset.setValue("Java范例完全自学手册(1DVD)", 400);
        dataset.setValue("Java开发典型模块大全", 750);
        return dataset;
    }

    /**
     * 获取数据集,生成JFreeChart,
     *
     * @return
     */
    private JFreeChart getJFreeChart() {
        PieDataset dataset = getPieDataset();
        JFreeChart chart = ChartFactory.createPieChart3D("2010.8月份销售排行",
                dataset, true, true, false);
        // 设置饼图使用的字体
        setPiePoltFont(chart);
        return chart;
    }

    /**
     * 设置饼图使用的字体
     *
     * @param chart
     */
    protected void setPiePoltFont(JFreeChart chart) {

        // 分类标签字体和显示
        PiePlot piePlot = (PiePlot) chart.getPlot();
        piePlot.setLabelFont(new Font("宋体", Font.PLAIN, 14));
        piePlot.setLabelGenerator(new StandardPieSectionLabelGenerator(
                "{0}:{1}"));

        // 标题字体
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.BOLD, 20));

        // 图例字体
        LegendTitle legendTitle = chart.getLegend();
        legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));

    }

    /**
     * 设置Pie
     *
     * @param chart
     */
    public void createPiePlot() {
        JFreeChart chart = getJFreeChart();
        PiePlot3D plot = (PiePlot3D) chart.getPlot();

        ActionListener actionListener = new PieDemo9Listener(plot);
        // 添加监听
        Timer timer = new Timer(100, actionListener);
        //启动timer时间器
        timer.start();

        // 把JFreeChart对象保存到面板中
        setContentPane(new ChartPanel(chart));

    }

    public static void main(String[] args) {
        PieDemo9 pieChartDemo1 = new PieDemo9("饼图实例");
        // 创建图形
        pieChartDemo1.createPiePlot();
        // 生成图形
        pieChartDemo1.pack();
        // 把窗体显示到显示器中
        RefineryUtilities.centerFrameOnScreen(pieChartDemo1);
        // 设置显示图形状态
        pieChartDemo1.setVisible(true);

    }

PieDemo9Listener.java
    private PiePlot plot;

    //饼图的角度
    private int angle = 90;
    
    public PieDemo9Listener(PiePlot plot) {
        this.plot =plot;
    }
    
    /*
     * 设置饼图的角度,然后加1,如果饼图的角度是360度,把角度设置为0
     * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
     */
    public void actionPerformed( ActionEvent event) {
        this.plot.setStartAngle(this.angle);
        this.angle = this.angle + 1;
        if (this.angle == 360) {
            this.angle = 0;
        }
    }


实例176 顺时针旋转3D饼图
PieDemo10.java
    public PieDemo10(String title) {
        super(title);
    }

    /**
     * 创建一个饼图表的数据集 把数据添加到数据集中
     *
     * @return
     */
    private PieDataset getPieDataset() {
        DefaultPieDataset dataset = new DefaultPieDataset();

        dataset.setValue("JAVA从入门到精通(第2版)", 500);
        dataset.setValue("视频学JAVA", 800);
        dataset.setValue("JAVA全能速查宝典", 1000);
        dataset.setValue("Java范例完全自学手册(1DVD)", 400);
        dataset.setValue("Java开发典型模块大全", 750);
        return dataset;
    }

    /**
     * 获取数据集,生成JFreeChart,
     *
     * @return
     */
    private JFreeChart getJFreeChart() {
        PieDataset dataset = getPieDataset();
        JFreeChart chart = ChartFactory.createPieChart3D("2010.8月份销售排行",
                dataset, true, true, false);
        // 设置饼图使用的字体
        setPiePoltFont(chart);
        return chart;
    }

    /**
     * 设置饼图使用的字体
     *
     * @param chart
     */
    protected void setPiePoltFont(JFreeChart chart) {

        // 分类标签字体和显示
        PiePlot piePlot = (PiePlot) chart.getPlot();
        piePlot.setLabelFont(new Font("宋体", Font.PLAIN, 14));
        piePlot.setLabelGenerator(new StandardPieSectionLabelGenerator(
                "{0}:{1}"));

        // 标题字体
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.BOLD, 20));

        // 图例字体
        LegendTitle legendTitle = chart.getLegend();
        legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));

    }

    /**
     * 设置Pie
     *
     * @param chart
     */
    public void createPiePlot() {
        JFreeChart chart = getJFreeChart();
        PiePlot3D plot = (PiePlot3D) chart.getPlot();

        ActionListener actionListener = new PieDemo10Listener(plot);
        // 添加监听
        Timer timer = new Timer(100, actionListener);
        //启动timer时间器
        timer.start();

        // 把JFreeChart对象保存到面板中
        setContentPane(new ChartPanel(chart));

    }

    public static void main(String[] args) {
        PieDemo10 pieChart = new PieDemo10("饼图实例");
        // 创建图形
        pieChart.createPiePlot();
        // 生成图形
        pieChart.pack();
        // 把窗体显示到显示器中
        RefineryUtilities.centerFrameOnScreen(pieChart);
        // 设置显示图形状态
        pieChart.setVisible(true);

    }

PieDemo10Listener.java
    private PiePlot plot;

    //饼图的角度
    private int angle = 90;
    
    public PieDemo10Listener(PiePlot plot) {
        this.plot =plot;
    }
    
    /*
     * 设置饼图的角度,向右旋转则减1,如果饼图的角度减到0时,把角度重新设置为是360
     * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
     */
    public void actionPerformed( ActionEvent event) {
        this.plot.setStartAngle(this.angle);
        this.angle = this.angle - 1;
        if (this.angle == 0) {
            this.angle = 360;
        }
    }

    
8.3 多饼图
实例177 实现多饼图
    public PieDemo11(final String title) {
        super(title);

    }

    /**
     * 创建数据集
     *
     * @return
     */
    private CategoryDataset createDataset() {
         double[][] data = new double[][] {
                { 620, 410, 300 },
                { 300, 390, 500 } };
         CategoryDataset dataset = DatasetUtilities.createCategoryDataset(
                "Dept",//行名称
                "Month",//列名称
                data);
        return dataset;
    }

    /**
     * 获取数据集,生成JFreeChart,
     *
     * @return
     */
    private JFreeChart getJFreeChart() {
        CategoryDataset dataset = createDataset();
        JFreeChart chart = ChartFactory.createMultiplePieChart(
                "4-6 month sales ranking ", // 饼图标题
                dataset, // 数据集
                TableOrder.BY_ROW, // 排序方式
                true, true, false);
        return chart;
    }

    /**
     * 创建饼图
     */
    public void createPiePlot() {
        JFreeChart chart = getJFreeChart();
        setContentPane(new ChartPanel(chart));
    }

    public static void main(final String[] args) {

        final PieDemo11 demo = new PieDemo11("饼图实例");
        demo.createPiePlot();
        demo.pack();
        RefineryUtilities.centerFrameOnScreen(demo);
        demo.setVisible(true);

    }

实例178 多饼图乱码
    public PieDemo12(final String title) {
        super(title);

    }

    /**
     * 创建数据集
     *
     * @return
     */
    private CategoryDataset createDataset() {
         double[][] data = new double[][] {
                { 620, 410, 300 },
                { 300, 390, 500 } };
         CategoryDataset dataset = DatasetUtilities.createCategoryDataset(
                "部门",//行名称
                "月份",//列名称
                data);
        return dataset;
    }

    /**
     * 获取数据集,生成JFreeChart,
     *
     * @return
     */
    private JFreeChart getJFreeChart() {
        CategoryDataset dataset = createDataset();
        JFreeChart chart = ChartFactory.createMultiplePieChart(
                "4-6月销售排行", // 饼图标题
                dataset, // 数据集
                TableOrder.BY_ROW, // 排序方式
                true, true, false);
        return chart;
    }

    /**
     * 创建饼图
     */
    public void createPiePlot() {
        JFreeChart chart = getJFreeChart();
        // 窗体标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.BOLD, 20));

        // 图例
        LegendTitle legendTitle = chart.getLegend();
        legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
        
        
        MultiplePiePlot multiplePiePlot = (MultiplePiePlot) chart.getPlot();
        JFreeChart jFreeChart = multiplePiePlot.getPieChart();

        // 图表标签
        PiePlot piePlot = (PiePlot) jFreeChart.getPlot();
        piePlot.setLabelFont(new Font("宋体", Font.PLAIN, 14));
        piePlot.setLabelGenerator(new StandardPieSectionLabelGenerator(
                "{0}:{1}"));

        // 图表标题
        TextTitle textTitle2 = jFreeChart.getTitle();
        textTitle2.setFont(new Font("宋体", Font.BOLD, 20));
        
        
        setContentPane(new ChartPanel(chart));
    }

    public static void main(final String[] args) {

        final PieDemo12 demo = new PieDemo12("饼图实例");
        demo.createPiePlot();
        demo.pack();
        RefineryUtilities.centerFrameOnScreen(demo);
        demo.setVisible(true);

    }


实例179 多饼图的展示方式
    public PieDemo13(final String title) {
        super(title);

    }

    /**
     * 创建数据集
     *
     * @return
     */
    private CategoryDataset createDataset() {
         double[][] data = new double[][] {
                { 620, 410, 300 },
                { 300, 390, 500 } };
         CategoryDataset dataset = DatasetUtilities.createCategoryDataset(
                "部门",//行名称
                "月份",//列名称
                data);
        return dataset;
    }

    /**
     * 获取数据集,生成JFreeChart,
     *
     * @return
     */
    private JFreeChart getJFreeChart() {
        CategoryDataset dataset = createDataset();
        JFreeChart chart = ChartFactory.createMultiplePieChart(
                "4-6月销售排行", // 饼图标题
                dataset, // 数据集
                TableOrder.BY_COLUMN, // 排序方式
                true, true, false);
        return chart;
    }

    /**
     * 创建饼图
     */
    public void createPiePlot() {
        JFreeChart chart = getJFreeChart();
        // 窗体标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.BOLD, 20));

        // 图例
        LegendTitle legendTitle = chart.getLegend();
        legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
        
        
        MultiplePiePlot multiplePiePlot = (MultiplePiePlot) chart.getPlot();
        JFreeChart jFreeChart = multiplePiePlot.getPieChart();

        // 图表标签
        PiePlot piePlot = (PiePlot) jFreeChart.getPlot();
        piePlot.setLabelFont(new Font("宋体", Font.PLAIN, 14));
        piePlot.setLabelGenerator(new StandardPieSectionLabelGenerator(
                "{0}:{1}"));
        // 图表标题
        TextTitle textTitle2 = jFreeChart.getTitle();
        textTitle2.setFont(new Font("宋体", Font.BOLD, 20));
        
        
        setContentPane(new ChartPanel(chart));
    }

    public static void main(final String[] args) {

        final PieDemo13 demo = new PieDemo13("饼图实例");
        demo.createPiePlot();
        demo.pack();
        RefineryUtilities.centerFrameOnScreen(demo);
        demo.setVisible(true);

    }


实例180 3D多饼图
    public PieDemo14(final String title) {
        super(title);

    }

    /**
     * 创建数据集
     *
     * @return
     */
    private CategoryDataset createDataset() {
         double[][] data = new double[][] {
                { 620, 410, 310 },
                { 300, 390, 500 } };
         CategoryDataset dataset = DatasetUtilities.createCategoryDataset(
                "部门",//行名称
                "月份",//列名称
                data);
        return dataset;
    }

    /**
     * 获取数据集,生成JFreeChart,
     *
     * @return
     */
    private JFreeChart getJFreeChart() {
        CategoryDataset dataset = createDataset();
        JFreeChart chart = ChartFactory.createMultiplePieChart3D(
                "4-6月销售排行", // 饼图标题
                dataset, // 数据集
                TableOrder.BY_COLUMN, // 排序方式
                true, true, false);
        return chart;
    }

    /**
     * 创建饼图
     */
    public void createPiePlot() {
        JFreeChart chart = getJFreeChart();
        // 窗体标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.BOLD, 20));

        // 图例
        LegendTitle legendTitle = chart.getLegend();
        legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
        
        
        MultiplePiePlot multiplePiePlot = (MultiplePiePlot) chart.getPlot();
        JFreeChart jFreeChart = multiplePiePlot.getPieChart();

        // 图表标签
        PiePlot3D piePlot = (PiePlot3D) jFreeChart.getPlot();

        piePlot.setLabelFont(new Font("宋体", Font.PLAIN, 14));
        piePlot.setLabelGenerator(new StandardPieSectionLabelGenerator(
                "{0}:{1}"));
        // 图表标题
        TextTitle textTitle2 = jFreeChart.getTitle();
        textTitle2.setFont(new Font("宋体", Font.BOLD, 20));
        
        
        setContentPane(new ChartPanel(chart));
    }

    public static void main(final String[] args) {

        final PieDemo14 demo = new PieDemo14("饼图实例");
        demo.createPiePlot();
        demo.pack();
        RefineryUtilities.centerFrameOnScreen(demo);
        demo.setVisible(true);

    }


8.4 基本柱形图
实例181 简单柱形图
    public BarDemo1(String title) {
        super(title);
    }

    /**
     * 创建一个数据集
     *
     * @return
     */
    private CategoryDataset getCategoryDataset() {

        DefaultKeyedValues keyedValues = new DefaultKeyedValues();
        keyedValues.addValue("1", 310);
        keyedValues.addValue("2", 489);
        keyedValues.addValue("3", 512);
        keyedValues.addValue("4", 589);
        keyedValues.addValue("5", 359);
        keyedValues.addValue("6", 402);
        CategoryDataset dataset = DatasetUtilities.createCategoryDataset(
                "java book", keyedValues);
        return dataset;
    }

    /**
     * 生成JFreeChart
     *
     * @return
     */
    private JFreeChart getJFreeChart() {
        CategoryDataset dataset = getCategoryDataset();
        JFreeChart chart = ChartFactory.createBarChart("2010.1-6 sales volume", // 图表标题
                "month", // x轴标签
                "sales", // y轴标签
                dataset, // 数据集
                PlotOrientation.VERTICAL, // 图表方向:水平、垂直
                false, // 是否显示图例(对于简单的柱状图必须是false)
                false, // 是否生成工具
                false // 是否生成URL链接
                );

        return chart;
    }

    /**
     * 设置图表
     *
     * @param chart
     */
    public void createPlot() {
        JFreeChart chart = getJFreeChart();
        // 把JFreeChart面板保存在窗体里
        setContentPane(new ChartPanel(chart));

    }

    public static void main(String[] args) {
        BarDemo1 barDemo = new BarDemo1("柱形图实例");
        barDemo.createPlot();
        barDemo.pack();
        // 把窗体显示到显示器中央
        RefineryUtilities.centerFrameOnScreen(barDemo);
        //设置可以显示
        barDemo.setVisible(true);

    }


实例182 柱形图角度
    public BarDemo19(String title) {
        super(title);
    }

    /**
     * 创建一个数据集
     *
     * @return
     */
    private CategoryDataset getCategoryDataset() {

        DefaultKeyedValues keyedValues = new DefaultKeyedValues();
        keyedValues.addValue("1", 310);
        keyedValues.addValue("2", 489);
        keyedValues.addValue("3", 512);
        keyedValues.addValue("4", 589);
        keyedValues.addValue("5", 359);
        keyedValues.addValue("6", 402);
        CategoryDataset dataset = DatasetUtilities.createCategoryDataset(
                "java book", keyedValues);
        return dataset;
    }

    /**
     * 生成JFreeChart
     *
     * @return
     */
    private JFreeChart getJFreeChart() {
        CategoryDataset dataset = getCategoryDataset();
        JFreeChart chart = ChartFactory.createBarChart("2010.1-6 sales volume", // 图表标题
                "month", // x轴标签
                "sales", // y轴标签
                dataset, // 数据集
                PlotOrientation.HORIZONTAL, // 图表方向:水平、垂直
                false, // 是否显示图例(对于简单的柱状图必须是false)
                false, // 是否生成工具
                false // 是否生成URL链接
                );

        return chart;
    }

    /**
     * 设置图表
     *
     * @param chart
     */
    public void createPlot() {
        JFreeChart chart = getJFreeChart();
        // 把JFreeChart面板保存在窗体里
        setContentPane(new ChartPanel(chart));

    }

    public static void main(String[] args) {
        BarDemo19 barDemo = new BarDemo19("柱形图实例");
        barDemo.createPlot();
        barDemo.pack();
        // 把窗体显示到显示器中央
        RefineryUtilities.centerFrameOnScreen(barDemo);
        //设置可以显示
        barDemo.setVisible(true);

    }


实例183 柱形图负值
    public BarDemo20(String title) {
        super(title);
    }

    /**
     * 创建一个数据集
     *
     * @return
     */
    private CategoryDataset getCategoryDataset() {

        DefaultKeyedValues keyedValues = new DefaultKeyedValues();
        keyedValues.addValue("1", 310);
        keyedValues.addValue("2", 489);
        keyedValues.addValue("3", 512);
        keyedValues.addValue("4", -589);
        keyedValues.addValue("5", null);
        keyedValues.addValue("6", 402);
        CategoryDataset dataset = DatasetUtilities.createCategoryDataset(
                "java book", keyedValues);
        return dataset;
    }

    /**
     * 生成JFreeChart
     *
     * @return
     */
    private JFreeChart getJFreeChart() {
        CategoryDataset dataset = getCategoryDataset();
        JFreeChart chart = ChartFactory.createBarChart("2010.1-6 sales volume", // 图表标题
                "month", // x轴标签
                "sales", // y轴标签
                dataset, // 数据集
                PlotOrientation.VERTICAL, // 图表方向:水平、垂直
                false, // 是否显示图例(对于简单的柱状图必须是false)
                false, // 是否生成工具
                false // 是否生成URL链接
                );

        return chart;
    }

    /**
     * 设置图表
     *
     * @param chart
     */
    public void createPlot() {
        JFreeChart chart = getJFreeChart();
        // 把JFreeChart面板保存在窗体里
        setContentPane(new ChartPanel(chart));

    }

    public static void main(String[] args) {
        BarDemo20 barDemo = new BarDemo20("柱形图实例");
        barDemo.createPlot();
        barDemo.pack();
        // 把窗体显示到显示器中央
        RefineryUtilities.centerFrameOnScreen(barDemo);
        //设置可以显示
        barDemo.setVisible(true);

    }


8.5 X坐标轴
实例184 X轴字体
    public BarDemo3(String title) {
        super(title);
    }

    /**
     * 创建一个数据集
     *
     * @return
     */
    private CategoryDataset getCategoryDataset() {

        DefaultKeyedValues keyedValues = new DefaultKeyedValues();
        keyedValues.addValue("1月", 310);
        keyedValues.addValue("2月", 489);
        keyedValues.addValue("3月", 512);
        keyedValues.addValue("4月", 589);
        keyedValues.addValue("5月", 359);
        keyedValues.addValue("6月", 402);
        CategoryDataset dataset = DatasetUtilities.createCategoryDataset(
                "java book", keyedValues);
        return dataset;
    }

    /**
     * 生成JFreeChart
     *
     * @return
     */
    private JFreeChart getJFreeChart() {
        CategoryDataset dataset = getCategoryDataset();
        JFreeChart chart = ChartFactory.createBarChart("2010年上半年销售量", // 图表标题
                "month", // x轴标签
                "sales", // y轴标签
                dataset, // 数据集
                PlotOrientation.VERTICAL, // 图表方向:水平、垂直
                false, // 是否显示图例(对于简单的柱状图必须是false)
                false, // 是否生成工具
                false // 是否生成URL链接
                );

        return chart;
    }
    
    /**
     * 修改字体
     * @param chart
     */
    public void updateFont(JFreeChart chart){

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();
        CategoryAxis axis = categoryPlot.getDomainAxis();
        //X轴字体
        axis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));

    }

    /**
     * 设置图表
     *
     * @param chart
     */
    public void createPlot() {
        JFreeChart chart = getJFreeChart();
        //修改字体
        updateFont(chart);
        // 把JFreeChart面板保存在窗体里
        setContentPane(new ChartPanel(chart));

    }
    
    

    public static void main(String[] args) {
        BarDemo3 barDemo = new BarDemo3("柱形图实例");
        barDemo.createPlot();
        barDemo.pack();
        // 把窗体显示到显示器中央
        RefineryUtilities.centerFrameOnScreen(barDemo);
        // 设置可以显示
        barDemo.setVisible(true);

    }


实例185 X轴标签字体
    public BarDemo5(String title) {
        super(title);
    }

    /**
     * 创建一个数据集
     *
     * @return
     */
    private CategoryDataset getCategoryDataset() {

        DefaultKeyedValues keyedValues = new DefaultKeyedValues();
        keyedValues.addValue("1月", 310);
        keyedValues.addValue("2月", 489);
        keyedValues.addValue("3月", 512);
        keyedValues.addValue("4月", 589);
        keyedValues.addValue("5月", 359);
        keyedValues.addValue("6月", 402);
        CategoryDataset dataset = DatasetUtilities.createCategoryDataset(
                "java book", keyedValues);
        return dataset;
    }

    /**
     * 生成JFreeChart
     *
     * @return
     */
    private JFreeChart getJFreeChart() {
        CategoryDataset dataset = getCategoryDataset();
        JFreeChart chart = ChartFactory.createBarChart("2010年上半年销售量", // 图表标题
                "月份", // x轴标签
                "sales", // y轴标签
                dataset, // 数据集
                PlotOrientation.VERTICAL, // 图表方向:水平、垂直
                false, // 是否显示图例(对于简单的柱状图必须是false)
                false, // 是否生成工具
                false // 是否生成URL链接
                );

        return chart;
    }
    
    /**
     * 修改字体
     * @param chart
     */
    public void updateFont(JFreeChart chart){

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
        
        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();
        
        CategoryAxis categoryAxis= categoryPlot.getDomainAxis();
        //X轴字体
        categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        //X轴标签字体
        categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
        
        // y轴字体
        ValueAxis valueAxis = categoryPlot.getRangeAxis();
        valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));

    }

    /**
     * 设置图表
     *
     * @param chart
     */
    public void createPlot() {
        JFreeChart chart = getJFreeChart();
        //修改字体
        updateFont(chart);
        // 把JFreeChart面板保存在窗体里
        setContentPane(new ChartPanel(chart));

    }
    
    

    public static void main(String[] args) {
        BarDemo5 barDemo = new BarDemo5("柱形图实例");
        barDemo.createPlot();
        barDemo.pack();
        // 把窗体显示到显示器中央
        RefineryUtilities.centerFrameOnScreen(barDemo);
        // 设置可以显示
        barDemo.setVisible(true);

    }

实例186 X轴标签角度
    public BarDemo40(String title) {
        super(title);
    }

    /**
     * 创建一个数据集
     *
     * @return
     */
    private CategoryDataset getCategoryDataset() {

        DefaultKeyedValues keyedValues = new DefaultKeyedValues();
        keyedValues.addValue("1月", 310);
        keyedValues.addValue("2月", 489);
        keyedValues.addValue("3月", 512);
        keyedValues.addValue("4月", 589);
        keyedValues.addValue("5月", 359);
        keyedValues.addValue("6月", 402);
        CategoryDataset dataset = DatasetUtilities.createCategoryDataset(
                "JAVA图书", keyedValues);
        return dataset;
    }

    /**
     * 生成JFreeChart
     *
     * @return
     */
    private JFreeChart getJFreeChart() {
        CategoryDataset dataset = getCategoryDataset();
        JFreeChart chart = ChartFactory.createBarChart("2010年上半年销售量", // 图表标题
                "月份", // x轴标签
                "销售量(单位:本)", // y轴标签
                dataset, // 数据集
                PlotOrientation.VERTICAL, // 图表方向:水平、垂直
                true, // 是否显示图例(对于简单的柱状图必须是false)
                false, // 是否生成工具
                false // 是否生成URL链接
                );
        return chart;
    }

    /**
     * 修改字体
     *
     * @param chart
     */
    private void updateFont(JFreeChart chart) {

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
        LegendTitle legendTitle = chart.getLegend();
        legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();

        CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
        // X轴字体
        categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // X轴标签字体
        categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

        ValueAxis valueAxis = categoryPlot.getRangeAxis();
        // y轴字体
        valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // y轴标签字体
        valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

    }

    /**
     * 更新图表显示
     *
     * @param chart
     */
    private void updatePlot(JFreeChart chart) {
        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();
        // 设置Y轴显示位置
        CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
        categoryAxis.setLabelAngle(Math.PI*0.5);
    }

    /**
     * 设置图表
     *
     * @param chart
     */
    public void createPlot() {
        JFreeChart chart = getJFreeChart();
        // 修改字体
        updateFont(chart);
        // 修改图表
        updatePlot(chart);
        // 把JFreeChart面板保存在窗体里
        setContentPane(new ChartPanel(chart));
    }

    public static void main(String[] args) {
        BarDemo40 barDemo = new BarDemo40("柱形图实例");
        barDemo.createPlot();
        barDemo.pack();
        // 把窗体显示到显示器中央
        RefineryUtilities.centerFrameOnScreen(barDemo);
        // 设置可以显示
        barDemo.setVisible(true);

    }

实例187 X轴显示情况
    public BarDemo7(String title) {
        super(title);
    }

    /**
     * 创建一个数据集
     *
     * @return
     */
    private CategoryDataset getCategoryDataset() {

        DefaultKeyedValues keyedValues = new DefaultKeyedValues();
        keyedValues.addValue("1月", 310);
        keyedValues.addValue("2月", 489);
        keyedValues.addValue("3月", 512);
        keyedValues.addValue("4月", 589);
        keyedValues.addValue("5月", 359);
        keyedValues.addValue("6月", 402);
        CategoryDataset dataset = DatasetUtilities.createCategoryDataset(
                "java book", keyedValues);
        return dataset;
    }

    /**
     * 生成JFreeChart
     *
     * @return
     */
    private JFreeChart getJFreeChart() {
        CategoryDataset dataset = getCategoryDataset();
        JFreeChart chart = ChartFactory.createBarChart("2010年上半年销售量", // 图表标题
                "月份", // x轴标签
                "销售量(单位:本)", // y轴标签
                dataset, // 数据集
                PlotOrientation.VERTICAL, // 图表方向:水平、垂直
                false, // 是否显示图例(对于简单的柱状图必须是false)
                false, // 是否生成工具
                false // 是否生成URL链接
                );

        return chart;
    }

    /**
     * 修改字体
     *
     * @param chart
     */
    public void updateFont(JFreeChart chart) {

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.PLAIN, 20));

        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();

        CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
        // X轴字体
        categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // X轴标签字体
        categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

        ValueAxis valueAxis = categoryPlot.getRangeAxis();
        // y轴字体
        valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // y轴标签字体
        valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

    }
    
    /**
     * 更新图表显示
     * @param chart
     */
    private void updatePlot(JFreeChart chart){
        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();
        //X轴(分类轴)
        CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
        //X轴是否显示
        categoryAxis.setVisible(false);
    }

    /**
     * 设置图表
     *
     * @param chart
     */
    public void createPlot() {
        JFreeChart chart = getJFreeChart();
        // 修改字体
        updateFont(chart);
        //修改图表
        updatePlot(chart);
        // 把JFreeChart面板保存在窗体里
        setContentPane(new ChartPanel(chart));

    }

    public static void main(String[] args) {
        BarDemo7 barDemo = new BarDemo7("柱形图实例");
        barDemo.createPlot();
        barDemo.pack();
        // 把窗体显示到显示器中央
        RefineryUtilities.centerFrameOnScreen(barDemo);
        // 设置可以显示
        barDemo.setVisible(true);

    }


实例188 X轴尺度线颜色
    public BarDemo9(String title) {
        super(title);
    }

    /**
     * 创建一个数据集
     *
     * @return
     */
    private CategoryDataset getCategoryDataset() {

        DefaultKeyedValues keyedValues = new DefaultKeyedValues();
        keyedValues.addValue("1月", 310);
        keyedValues.addValue("2月", 489);
        keyedValues.addValue("3月", 512);
        keyedValues.addValue("4月", 589);
        keyedValues.addValue("5月", 359);
        keyedValues.addValue("6月", 402);
        CategoryDataset dataset = DatasetUtilities.createCategoryDataset(
                "java book", keyedValues);
        return dataset;
    }

    /**
     * 生成JFreeChart
     *
     * @return
     */
    private JFreeChart getJFreeChart() {
        CategoryDataset dataset = getCategoryDataset();
        JFreeChart chart = ChartFactory.createBarChart("2010年上半年销售量", // 图表标题
                "月份", // x轴标签
                "销售量(单位:本)", // y轴标签
                dataset, // 数据集
                PlotOrientation.VERTICAL, // 图表方向:水平、垂直
                false, // 是否显示图例(对于简单的柱状图必须是false)
                false, // 是否生成工具
                false // 是否生成URL链接
                );

        return chart;
    }

    /**
     * 修改字体
     *
     * @param chart
     */
    public void updateFont(JFreeChart chart) {

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.PLAIN, 20));

        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();

        CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
        // X轴字体
        categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // X轴标签字体
        categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

        ValueAxis valueAxis = categoryPlot.getRangeAxis();
        // y轴字体
        valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // y轴标签字体
        valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

    }
    
    /**
     * 更新图表显示
     * @param chart
     */
    private void updatePlot(JFreeChart chart){
        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();
        //X轴(分类轴)
        CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
        //X轴尺度颜色
        categoryAxis.setAxisLinePaint(Color.GREEN);
    }

    /**
     * 设置图表
     *
     * @param chart
     */
    public void createPlot() {
        JFreeChart chart = getJFreeChart();
        // 修改字体
        updateFont(chart);
        //修改图表
        updatePlot(chart);
        // 把JFreeChart面板保存在窗体里
        setContentPane(new ChartPanel(chart));

    }

    public static void main(String[] args) {
        BarDemo9 barDemo = new BarDemo9("柱形图实例");
        barDemo.createPlot();
        barDemo.pack();
        // 把窗体显示到显示器中央
        RefineryUtilities.centerFrameOnScreen(barDemo);
        // 设置可以显示
        barDemo.setVisible(true);

    }


实例189 隐藏X轴尺度线
    public BarDemo11(String title) {
        super(title);
    }

    /**
     * 创建一个数据集
     *
     * @return
     */
    private CategoryDataset getCategoryDataset() {

        DefaultKeyedValues keyedValues = new DefaultKeyedValues();
        keyedValues.addValue("1月", 310);
        keyedValues.addValue("2月", 489);
        keyedValues.addValue("3月", 512);
        keyedValues.addValue("4月", 589);
        keyedValues.addValue("5月", 359);
        keyedValues.addValue("6月", 402);
        CategoryDataset dataset = DatasetUtilities.createCategoryDataset(
                "java book", keyedValues);
        return dataset;
    }

    /**
     * 生成JFreeChart
     *
     * @return
     */
    private JFreeChart getJFreeChart() {
        CategoryDataset dataset = getCategoryDataset();
        JFreeChart chart = ChartFactory.createBarChart("2010年上半年销售量", // 图表标题
                "月份", // x轴标签
                "销售量(单位:本)", // y轴标签
                dataset, // 数据集
                PlotOrientation.VERTICAL, // 图表方向:水平、垂直
                false, // 是否显示图例(对于简单的柱状图必须是false)
                false, // 是否生成工具
                false // 是否生成URL链接
                );

        return chart;
    }

    /**
     * 修改字体
     *
     * @param chart
     */
    public void updateFont(JFreeChart chart) {

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.PLAIN, 20));

        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();

        CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
        // X轴字体
        categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // X轴标签字体
        categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

        ValueAxis valueAxis = categoryPlot.getRangeAxis();
        // y轴字体
        valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // y轴标签字体
        valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

    }
    
    /**
     * 更新图表显示
     * @param chart
     */
    private void updatePlot(JFreeChart chart){
        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();
        // x轴字体
        CategoryAxis axis = categoryPlot.getDomainAxis();
        //尺度线
        axis.setAxisLineVisible(false);
    }

    /**
     * 设置图表
     *
     * @param chart
     */
    public void createPlot() {
        JFreeChart chart = getJFreeChart();
        // 修改字体
        updateFont(chart);
        //修改图表
        updatePlot(chart);
        // 把JFreeChart面板保存在窗体里
        setContentPane(new ChartPanel(chart));
    }

    public static void main(String[] args) {
        BarDemo11 barDemo = new BarDemo11("柱形图实例");
        barDemo.createPlot();
        barDemo.pack();
        // 把窗体显示到显示器中央
        RefineryUtilities.centerFrameOnScreen(barDemo);
        // 设置可以显示
        barDemo.setVisible(true);

    }


实例190 X轴尺度线笔触
    public BarDemo13(String title) {
        super(title);
    }

    /**
     * 创建一个数据集
     *
     * @return
     */
    private CategoryDataset getCategoryDataset() {

        DefaultKeyedValues keyedValues = new DefaultKeyedValues();
        keyedValues.addValue("1月", 310);
        keyedValues.addValue("2月", 489);
        keyedValues.addValue("3月", 512);
        keyedValues.addValue("4月", 589);
        keyedValues.addValue("5月", 359);
        keyedValues.addValue("6月", 402);
        CategoryDataset dataset = DatasetUtilities.createCategoryDataset(
                "java book", keyedValues);
        return dataset;
    }

    /**
     * 生成JFreeChart
     *
     * @return
     */
    private JFreeChart getJFreeChart() {
        CategoryDataset dataset = getCategoryDataset();
        JFreeChart chart = ChartFactory.createBarChart("2010年上半年销售量", // 图表标题
                "月份", // x轴标签
                "销售量(单位:本)", // y轴标签
                dataset, // 数据集
                PlotOrientation.VERTICAL, // 图表方向:水平、垂直
                false, // 是否显示图例(对于简单的柱状图必须是false)
                false, // 是否生成工具
                false // 是否生成URL链接
                );

        return chart;
    }

    /**
     * 修改字体
     *
     * @param chart
     */
    private void updateFont(JFreeChart chart) {

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.PLAIN, 20));

        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();

        CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
        // X轴字体
        categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // X轴标签字体
        categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

        ValueAxis valueAxis = categoryPlot.getRangeAxis();
        // y轴字体
        valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // y轴标签字体
        valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

    }

    /**
     * 更新图表显示
     *
     * @param chart
     */
    private void updatePlot(JFreeChart chart) {
        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();
        // x轴字体
        CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
        // 尺度笔触
        categoryAxis.setAxisLineStroke(new BasicStroke(5));
    }

    /**
     * 设置图表
     *
     * @param chart
     */
    public void createPlot() {
        JFreeChart chart = getJFreeChart();
        // 修改字体
        updateFont(chart);
        // 修改图表
        updatePlot(chart);
        // 把JFreeChart面板保存在窗体里
        setContentPane(new ChartPanel(chart));
    }

    public static void main(String[] args) {
        BarDemo13 barDemo = new BarDemo13("柱形图实例");
        barDemo.createPlot();
        barDemo.pack();
        // 把窗体显示到显示器中央
        RefineryUtilities.centerFrameOnScreen(barDemo);
        // 设置可以显示
        barDemo.setVisible(true);

    }


实例191 X轴尺度标签角度
    public BarDemo15(String title) {
        super(title);
    }

    /**
     * 创建一个数据集
     *
     * @return
     */
    private CategoryDataset getCategoryDataset() {

        DefaultKeyedValues keyedValues = new DefaultKeyedValues();
        keyedValues.addValue("1月", 310);
        keyedValues.addValue("2月", 489);
        keyedValues.addValue("3月", 512);
        keyedValues.addValue("4月", 589);
        keyedValues.addValue("5月", 359);
        keyedValues.addValue("6月", 402);
        CategoryDataset dataset = DatasetUtilities.createCategoryDataset(
                "java book", keyedValues);
        return dataset;
    }

    /**
     * 生成JFreeChart
     *
     * @return
     */
    private JFreeChart getJFreeChart() {
        CategoryDataset dataset = getCategoryDataset();
        JFreeChart chart = ChartFactory.createBarChart("2010年上半年销售量", // 图表标题
                "月份", // x轴标签
                "销售量(单位:本)", // y轴标签
                dataset, // 数据集
                PlotOrientation.VERTICAL, // 图表方向:水平、垂直
                false, // 是否显示图例(对于简单的柱状图必须是false)
                false, // 是否生成工具
                false // 是否生成URL链接
                );

        return chart;
    }

    /**
     * 修改字体
     *
     * @param chart
     */
    private void updateFont(JFreeChart chart) {

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.PLAIN, 20));

        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();

        CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
        // X轴字体
        categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // X轴标签字体
        categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

        ValueAxis valueAxis = categoryPlot.getRangeAxis();
        // y轴字体
        valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // y轴标签字体
        valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

    }

    /**
     * 更新图表显示
     *
     * @param chart
     */
    private void updatePlot(JFreeChart chart) {
        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();
        // x轴
        CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
        // 尺度间隔
        categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.DOWN_45);
        
    }

    /**
     * 设置图表
     *
     * @param chart
     */
    public void createPlot() {
        JFreeChart chart = getJFreeChart();
        // 修改字体
        updateFont(chart);
        // 修改图表
        updatePlot(chart);
        // 把JFreeChart面板保存在窗体里
        setContentPane(new ChartPanel(chart));
    }

    public static void main(String[] args) {
        BarDemo15 barDemo = new BarDemo15("柱形图实例");
        barDemo.createPlot();
        barDemo.pack();
        // 把窗体显示到显示器中央
        RefineryUtilities.centerFrameOnScreen(barDemo);
        // 设置可以显示
        barDemo.setVisible(true);

    }

实例192 X轴分类的间距
    public BarDemo17(String title) {
        super(title);
    }

    /**
     * 创建一个数据集
     *
     * @return
     */
    private CategoryDataset getCategoryDataset() {

        DefaultKeyedValues keyedValues = new DefaultKeyedValues();
        keyedValues.addValue("1月", 310);
        keyedValues.addValue("2月", 489);
        keyedValues.addValue("3月", 512);
        keyedValues.addValue("4月", 589);
        keyedValues.addValue("5月", 359);
        keyedValues.addValue("6月", 402);
        CategoryDataset dataset = DatasetUtilities.createCategoryDataset(
                "java book", keyedValues);
        return dataset;
    }

    /**
     * 生成JFreeChart
     *
     * @return
     */
    private JFreeChart getJFreeChart() {
        CategoryDataset dataset = getCategoryDataset();
        JFreeChart chart = ChartFactory.createBarChart("2010年上半年销售量", // 图表标题
                "月份", // x轴标签
                "销售量(单位:本)", // y轴标签
                dataset, // 数据集
                PlotOrientation.VERTICAL, // 图表方向:水平、垂直
                false, // 是否显示图例(对于简单的柱状图必须是false)
                false, // 是否生成工具
                false // 是否生成URL链接
                );

        return chart;
    }

    /**
     * 修改字体
     *
     * @param chart
     */
    public void updateFont(JFreeChart chart) {

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.PLAIN, 20));

        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();

        CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
        // X轴字体
        categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // X轴标签字体
        categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

        ValueAxis valueAxis = categoryPlot.getRangeAxis();
        // y轴字体
        valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // y轴标签字体
        valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

    }

    /**
     * 更新图表显示
     *
     * @param chart
     */
    private void updatePlot(JFreeChart chart) {
        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();
        // X轴
        CategoryAxis axis = categoryPlot.getDomainAxis();
        // X轴分类间距
        axis.setCategoryMargin(0.5);
    }

    /**
     * 设置图表
     *
     * @param chart
     */
    public void createPlot() {
        JFreeChart chart = getJFreeChart();
        // 修改字体
        updateFont(chart);
        // 修改图表
        updatePlot(chart);
        // 把JFreeChart面板保存在窗体里
        setContentPane(new ChartPanel(chart));
    }

    public static void main(String[] args) {
        BarDemo17 barDemo = new BarDemo17("柱形图实例");
        barDemo.createPlot();
        barDemo.pack();
        // 把窗体显示到显示器中央
        RefineryUtilities.centerFrameOnScreen(barDemo);
        // 设置可以显示
        barDemo.setVisible(true);

    }


实例193 X轴分类与原点的间距
    public BarDemo18(String title) {
        super(title);
    }

    /**
     * 创建一个数据集
     *
     * @return
     */
    private CategoryDataset getCategoryDataset() {

        DefaultKeyedValues keyedValues = new DefaultKeyedValues();
        keyedValues.addValue("1月", 310);
        keyedValues.addValue("2月", 489);
        keyedValues.addValue("3月", 512);
        keyedValues.addValue("4月", 589);
        keyedValues.addValue("5月", 359);
        keyedValues.addValue("6月", 402);
        CategoryDataset dataset = DatasetUtilities.createCategoryDataset(
                "java book", keyedValues);
        return dataset;
    }

    /**
     * 生成JFreeChart
     *
     * @return
     */
    private JFreeChart getJFreeChart() {
        CategoryDataset dataset = getCategoryDataset();
        JFreeChart chart = ChartFactory.createBarChart("2010年上半年销售量", // 图表标题
                "月份", // x轴标签
                "销售量(单位:本)", // y轴标签
                dataset, // 数据集
                PlotOrientation.VERTICAL, // 图表方向:水平、垂直
                false, // 是否显示图例(对于简单的柱状图必须是false)
                false, // 是否生成工具
                false // 是否生成URL链接
                );

        return chart;
    }

    /**
     * 修改字体
     *
     * @param chart
     */
    public void updateFont(JFreeChart chart) {

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.PLAIN, 20));

        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();

        CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
        // X轴字体
        categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // X轴标签字体
        categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

        ValueAxis valueAxis = categoryPlot.getRangeAxis();
        // y轴字体
        valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // y轴标签字体
        valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

    }
    
    /**
     * 更新图表显示
     * @param chart
     */
    private void updatePlot(JFreeChart chart){
        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();
        //X轴
        CategoryAxis axis = categoryPlot.getDomainAxis();
        //与原点的距离
        axis.setLowerMargin(0.3);
    }

    /**
     * 设置图表
     *
     * @param chart
     */
    public void createPlot() {
        JFreeChart chart = getJFreeChart();
        // 修改字体
        updateFont(chart);
        //修改图表
        updatePlot(chart);
        // 把JFreeChart面板保存在窗体里
        setContentPane(new ChartPanel(chart));
    }

    public static void main(String[] args) {
        BarDemo18 barDemo = new BarDemo18("柱形图实例");
        barDemo.createPlot();
        barDemo.pack();
        // 把窗体显示到显示器中央
        RefineryUtilities.centerFrameOnScreen(barDemo);
        // 设置可以显示
        barDemo.setVisible(true);

    }


实例194 X轴的显示位置
    public BarDemo38(String title) {
        super(title);
    }

    /**
     * 创建一个数据集
     *
     * @return
     */
    private CategoryDataset getCategoryDataset() {

        DefaultKeyedValues keyedValues = new DefaultKeyedValues();
        keyedValues.addValue("1月", 310);
        keyedValues.addValue("2月", 489);
        keyedValues.addValue("3月", 512);
        keyedValues.addValue("4月", 589);
        keyedValues.addValue("5月", 359);
        keyedValues.addValue("6月", 402);
        CategoryDataset dataset = DatasetUtilities.createCategoryDataset(
                "JAVA图书", keyedValues);
        return dataset;
    }

    /**
     * 生成JFreeChart
     *
     * @return
     */
    private JFreeChart getJFreeChart() {
        CategoryDataset dataset = getCategoryDataset();
        JFreeChart chart = ChartFactory.createBarChart("2010年上半年销售量", // 图表标题
                "月份", // x轴标签
                "销售量(单位:本)", // y轴标签
                dataset, // 数据集
                PlotOrientation.VERTICAL, // 图表方向:水平、垂直
                true, // 是否显示图例(对于简单的柱状图必须是false)
                false, // 是否生成工具
                false // 是否生成URL链接
                );
        return chart;
    }

    /**
     * 修改字体
     *
     * @param chart
     */
    private void updateFont(JFreeChart chart) {

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
        LegendTitle legendTitle = chart.getLegend();
        legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();

        CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
        // X轴字体
        categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // X轴标签字体
        categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

        ValueAxis valueAxis = categoryPlot.getRangeAxis();
        // y轴字体
        valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // y轴标签字体
        valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

    }

    /**
     * 更新图表显示
     *
     * @param chart
     */
    private void updatePlot(JFreeChart chart) {
        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();
        // 设置X轴显示位置
        categoryPlot.setDomainAxisLocation(AxisLocation.TOP_OR_RIGHT);

    }

    /**
     * 设置图表
     *
     * @param chart
     */
    public void createPlot() {
        JFreeChart chart = getJFreeChart();
        // 修改字体
        updateFont(chart);
        // 修改图表
        updatePlot(chart);
        // 把JFreeChart面板保存在窗体里
        setContentPane(new ChartPanel(chart));
    }

    public static void main(String[] args) {
        BarDemo38 barDemo = new BarDemo38("柱形图实例");
        barDemo.createPlot();
        barDemo.pack();
        // 把窗体显示到显示器中央
        RefineryUtilities.centerFrameOnScreen(barDemo);
        // 设置可以显示
        barDemo.setVisible(true);

    }

 

8.6 Y坐标轴
实例195 Y轴字体
    public BarDemo4(String title) {
        super(title);
    }

    /**
     * 创建一个数据集
     *
     * @return
     */
    private CategoryDataset getCategoryDataset() {

        DefaultKeyedValues keyedValues = new DefaultKeyedValues();
        keyedValues.addValue("1月", 310);
        keyedValues.addValue("2月", 489);
        keyedValues.addValue("3月", 512);
        keyedValues.addValue("4月", 589);
        keyedValues.addValue("5月", 359);
        keyedValues.addValue("6月", 402);
        CategoryDataset dataset = DatasetUtilities.createCategoryDataset(
                "java book", keyedValues);
        return dataset;
    }

    /**
     * 生成JFreeChart
     *
     * @return
     */
    private JFreeChart getJFreeChart() {
        CategoryDataset dataset = getCategoryDataset();
        JFreeChart chart = ChartFactory.createBarChart("2010年上半年销售量", // 图表标题
                "month", // x轴标签
                "sales", // y轴标签
                dataset, // 数据集
                PlotOrientation.VERTICAL, // 图表方向:水平、垂直
                false, // 是否显示图例(对于简单的柱状图必须是false)
                false, // 是否生成工具
                false // 是否生成URL链接
                );

        return chart;
    }
    
    /**
     * 修改字体
     * @param chart
     */
    public void updateFont(JFreeChart chart){

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
        
        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();
        
        CategoryAxis axis = categoryPlot.getDomainAxis();
        //X轴字体
        axis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        
        ValueAxis valueAxis = categoryPlot.getRangeAxis();
        // y轴字体
        valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));

    }

    /**
     * 设置图表
     *
     * @param chart
     */
    public void createPlot() {
        JFreeChart chart = getJFreeChart();
        //修改字体
        updateFont(chart);
        // 把JFreeChart面板保存在窗体里
        setContentPane(new ChartPanel(chart));

    }
    
    

    public static void main(String[] args) {
        BarDemo4 barDemo = new BarDemo4("柱形图实例");
        barDemo.createPlot();
        barDemo.pack();
        // 把窗体显示到显示器中央
        RefineryUtilities.centerFrameOnScreen(barDemo);
        // 设置可以显示
        barDemo.setVisible(true);

    }


实例196 Y轴标签字体
    public BarDemo6(String title) {
        super(title);
    }

    /**
     * 创建一个数据集
     *
     * @return
     */
    private CategoryDataset getCategoryDataset() {

        DefaultKeyedValues keyedValues = new DefaultKeyedValues();
        keyedValues.addValue("1月", 310);
        keyedValues.addValue("2月", 489);
        keyedValues.addValue("3月", 512);
        keyedValues.addValue("4月", 589);
        keyedValues.addValue("5月", 359);
        keyedValues.addValue("6月", 402);
        CategoryDataset dataset = DatasetUtilities.createCategoryDataset(
                "java book", keyedValues);
        return dataset;
    }

    /**
     * 生成JFreeChart
     *
     * @return
     */
    private JFreeChart getJFreeChart() {
        CategoryDataset dataset = getCategoryDataset();
        JFreeChart chart = ChartFactory.createBarChart("2010年上半年销售量", // 图表标题
                "月份", // x轴标签
                "销售量(单位:本)", // y轴标签
                dataset, // 数据集
                PlotOrientation.VERTICAL, // 图表方向:水平、垂直
                false, // 是否显示图例(对于简单的柱状图必须是false)
                false, // 是否生成工具
                false // 是否生成URL链接
                );

        return chart;
    }

    /**
     * 修改字体
     *
     * @param chart
     */
    public void updateFont(JFreeChart chart) {

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.PLAIN, 20));

        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();

        CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
        // X轴字体
        categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // X轴标签字体
        categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

        ValueAxis valueAxis = categoryPlot.getRangeAxis();
        // y轴字体
        valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // y轴标签字体
        valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

    }

    /**
     * 设置图表
     *
     * @param chart
     */
    public void createPlot() {
        JFreeChart chart = getJFreeChart();
        // 修改字体
        updateFont(chart);
        // 把JFreeChart面板保存在窗体里
        setContentPane(new ChartPanel(chart));

    }

    public static void main(String[] args) {
        BarDemo6 barDemo = new BarDemo6("柱形图实例");
        barDemo.createPlot();
        barDemo.pack();
        // 把窗体显示到显示器中央
        RefineryUtilities.centerFrameOnScreen(barDemo);
        // 设置可以显示
        barDemo.setVisible(true);

    }


实例197 Y轴显示情况

    public BarDemo8(String title) {
        super(title);
    }

    /**
     * 创建一个数据集
     *
     * @return
     */
    private CategoryDataset getCategoryDataset() {

        DefaultKeyedValues keyedValues = new DefaultKeyedValues();
        keyedValues.addValue("1月", 310);
        keyedValues.addValue("2月", 489);
        keyedValues.addValue("3月", 512);
        keyedValues.addValue("4月", 589);
        keyedValues.addValue("5月", 359);
        keyedValues.addValue("6月", 402);
        CategoryDataset dataset = DatasetUtilities.createCategoryDataset(
                "java book", keyedValues);
        return dataset;
    }

    /**
     * 生成JFreeChart
     *
     * @return
     */
    private JFreeChart getJFreeChart() {
        CategoryDataset dataset = getCategoryDataset();
        JFreeChart chart = ChartFactory.createBarChart("2010年上半年销售量", // 图表标题
                "月份", // x轴标签
                "销售量(单位:本)", // y轴标签
                dataset, // 数据集
                PlotOrientation.VERTICAL, // 图表方向:水平、垂直
                false, // 是否显示图例(对于简单的柱状图必须是false)
                false, // 是否生成工具
                false // 是否生成URL链接
                );

        return chart;
    }

    /**
     * 修改字体
     *
     * @param chart
     */
    public void updateFont(JFreeChart chart) {

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.PLAIN, 20));

        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();

        CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
        // X轴字体
        categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // X轴标签字体
        categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

        ValueAxis valueAxis = categoryPlot.getRangeAxis();
        // y轴字体
        valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // y轴标签字体
        valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

    }
    
    /**
     * 更新图表显示
     * @param chart
     */
    private void updatePlot(JFreeChart chart){
        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();
        //y轴(数值轴)
        ValueAxis valueAxis = categoryPlot.getRangeAxis();
        //y轴是否显示
        valueAxis.setVisible(false);
    }

    /**
     * 设置图表
     *
     * @param chart
     */
    public void createPlot() {
        JFreeChart chart = getJFreeChart();
        // 修改字体
        updateFont(chart);
        //修改图表
        updatePlot(chart);
        // 把JFreeChart面板保存在窗体里
        setContentPane(new ChartPanel(chart));

    }

    public static void main(String[] args) {
        BarDemo8 barDemo = new BarDemo8("柱形图实例");
        barDemo.createPlot();
        barDemo.pack();
        // 把窗体显示到显示器中央
        RefineryUtilities.centerFrameOnScreen(barDemo);
        // 设置可以显示
        barDemo.setVisible(true);

    }

实例198 Y轴尺度线颜色
    public BarDemo10(String title) {
        super(title);
    }

    /**
     * 创建一个数据集
     *
     * @return
     */
    private CategoryDataset getCategoryDataset() {

        DefaultKeyedValues keyedValues = new DefaultKeyedValues();
        keyedValues.addValue("1月", 310);
        keyedValues.addValue("2月", 489);
        keyedValues.addValue("3月", 512);
        keyedValues.addValue("4月", 589);
        keyedValues.addValue("5月", 359);
        keyedValues.addValue("6月", 402);
        CategoryDataset dataset = DatasetUtilities.createCategoryDataset(
                "java book", keyedValues);
        return dataset;
    }

    /**
     * 生成JFreeChart
     *
     * @return
     */
    private JFreeChart getJFreeChart() {
        CategoryDataset dataset = getCategoryDataset();
        JFreeChart chart = ChartFactory.createBarChart("2010年上半年销售量", // 图表标题
                "月份", // x轴标签
                "销售量(单位:本)", // y轴标签
                dataset, // 数据集
                PlotOrientation.VERTICAL, // 图表方向:水平、垂直
                false, // 是否显示图例(对于简单的柱状图必须是false)
                false, // 是否生成工具
                false // 是否生成URL链接
                );

        return chart;
    }

    /**
     * 修改字体
     *
     * @param chart
     */
    public void updateFont(JFreeChart chart) {

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.PLAIN, 20));

        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();

        CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
        // X轴字体
        categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // X轴标签字体
        categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

        ValueAxis valueAxis = categoryPlot.getRangeAxis();
        // y轴字体
        valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // y轴标签字体
        valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

    }
    
    /**
     * 更新图表显示
     * @param chart
     */
    private void updatePlot(JFreeChart chart){
        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();
        //Y轴(数值轴)
        ValueAxis valueAxis = categoryPlot.getRangeAxis();
        //Y轴尺度颜色
        valueAxis.setAxisLinePaint(Color.GREEN);
        //X轴(分类轴)
        CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
        //X轴尺度颜色
        categoryAxis.setAxisLinePaint(Color.GREEN);
    }

    /**
     * 设置图表
     *
     * @param chart
     */
    public void createPlot() {
        JFreeChart chart = getJFreeChart();
        // 修改字体
        updateFont(chart);
        //修改图表
        updatePlot(chart);
        // 把JFreeChart面板保存在窗体里
        setContentPane(new ChartPanel(chart));

    }

    public static void main(String[] args) {
        BarDemo10 barDemo = new BarDemo10("柱形图实例");
        barDemo.createPlot();
        barDemo.pack();
        // 把窗体显示到显示器中央
        RefineryUtilities.centerFrameOnScreen(barDemo);
        // 设置可以显示
        barDemo.setVisible(true);

    }


实例199 隐藏Y轴尺度线
    public BarDemo12(String title) {
        super(title);
    }

    /**
     * 创建一个数据集
     *
     * @return
     */
    private CategoryDataset getCategoryDataset() {

        DefaultKeyedValues keyedValues = new DefaultKeyedValues();
        keyedValues.addValue("1月", 310);
        keyedValues.addValue("2月", 489);
        keyedValues.addValue("3月", 512);
        keyedValues.addValue("4月", 589);
        keyedValues.addValue("5月", 359);
        keyedValues.addValue("6月", 402);
        CategoryDataset dataset = DatasetUtilities.createCategoryDataset(
                "java book", keyedValues);
        return dataset;
    }

    /**
     * 生成JFreeChart
     *
     * @return
     */
    private JFreeChart getJFreeChart() {
        CategoryDataset dataset = getCategoryDataset();
        JFreeChart chart = ChartFactory.createBarChart("2010年上半年销售量", // 图表标题
                "月份", // x轴标签
                "销售量(单位:本)", // y轴标签
                dataset, // 数据集
                PlotOrientation.VERTICAL, // 图表方向:水平、垂直
                false, // 是否显示图例(对于简单的柱状图必须是false)
                false, // 是否生成工具
                false // 是否生成URL链接
                );

        return chart;
    }

    /**
     * 修改字体
     *
     * @param chart
     */
    public void updateFont(JFreeChart chart) {

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.PLAIN, 20));

        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();

        CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
        // X轴字体
        categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // X轴标签字体
        categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

        ValueAxis valueAxis = categoryPlot.getRangeAxis();
        // y轴字体
        valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // y轴标签字体
        valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

    }
    
    /**
     * 更新图表显示
     * @param chart
     */
    private void updatePlot(JFreeChart chart){
        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();
        //Y轴
        ValueAxis valueAxis = categoryPlot.getRangeAxis();
        //尺度线
        valueAxis.setAxisLineVisible(false);
    }

    /**
     * 设置图表
     *
     * @param chart
     */
    public void createPlot() {
        JFreeChart chart = getJFreeChart();
        // 修改字体
        updateFont(chart);
        //修改图表
        updatePlot(chart);
        // 把JFreeChart面板保存在窗体里
        setContentPane(new ChartPanel(chart));
    }

    public static void main(String[] args) {
        BarDemo12 barDemo = new BarDemo12("柱形图实例");
        barDemo.createPlot();
        barDemo.pack();
        // 把窗体显示到显示器中央
        RefineryUtilities.centerFrameOnScreen(barDemo);
        // 设置可以显示
        barDemo.setVisible(true);

    }


实例200 Y轴尺度线笔触
    public BarDemo14(String title) {
        super(title);
    }

    /**
     * 创建一个数据集
     *
     * @return
     */
    private CategoryDataset getCategoryDataset() {

        DefaultKeyedValues keyedValues = new DefaultKeyedValues();
        keyedValues.addValue("1月", 310);
        keyedValues.addValue("2月", 489);
        keyedValues.addValue("3月", 512);
        keyedValues.addValue("4月", 589);
        keyedValues.addValue("5月", 359);
        keyedValues.addValue("6月", 402);
        CategoryDataset dataset = DatasetUtilities.createCategoryDataset(
                "java book", keyedValues);
        return dataset;
    }

    /**
     * 生成JFreeChart
     *
     * @return
     */
    private JFreeChart getJFreeChart() {
        CategoryDataset dataset = getCategoryDataset();
        JFreeChart chart = ChartFactory.createBarChart("2010年上半年销售量", // 图表标题
                "月份", // x轴标签
                "销售量(单位:本)", // y轴标签
                dataset, // 数据集
                PlotOrientation.VERTICAL, // 图表方向:水平、垂直
                false, // 是否显示图例(对于简单的柱状图必须是false)
                false, // 是否生成工具
                false // 是否生成URL链接
                );

        return chart;
    }

    /**
     * 修改字体
     *
     * @param chart
     */
    public void updateFont(JFreeChart chart) {

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.PLAIN, 20));

        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();

        CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
        // X轴字体
        categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // X轴标签字体
        categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

        ValueAxis valueAxis = categoryPlot.getRangeAxis();
        // y轴字体
        valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // y轴标签字体
        valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

    }
    
    /**
     * 更新图表显示
     * @param chart
     */
    private void updatePlot(JFreeChart chart){
        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();
        // Y轴
        ValueAxis valueAxis = categoryPlot.getRangeAxis();
        //尺度笔触
        valueAxis.setAxisLineStroke(new BasicStroke(5));
    }

    /**
     * 设置图表
     *
     * @param chart
     */
    public void createPlot() {
        JFreeChart chart = getJFreeChart();
        // 修改字体
        updateFont(chart);
        //修改图表
        updatePlot(chart);
        // 把JFreeChart面板保存在窗体里
        setContentPane(new ChartPanel(chart));
    }

    public static void main(String[] args) {
        BarDemo14 barDemo = new BarDemo14("柱形图实例");
        barDemo.createPlot();
        barDemo.pack();
        // 把窗体显示到显示器中央
        RefineryUtilities.centerFrameOnScreen(barDemo);
        // 设置可以显示
        barDemo.setVisible(true);

    }

实例201  Y轴尺度标签角度
    public BarDemo16(String title) {
        super(title);
    }

    /**
     * 创建一个数据集
     *
     * @return
     */
    private CategoryDataset getCategoryDataset() {

        DefaultKeyedValues keyedValues = new DefaultKeyedValues();
        keyedValues.addValue("1月", 310);
        keyedValues.addValue("2月", 489);
        keyedValues.addValue("3月", 512);
        keyedValues.addValue("4月", 589);
        keyedValues.addValue("5月", 359);
        keyedValues.addValue("6月", 402);
        CategoryDataset dataset = DatasetUtilities.createCategoryDataset(
                "java book", keyedValues);
        return dataset;
    }

    /**
     * 生成JFreeChart
     *
     * @return
     */
    private JFreeChart getJFreeChart() {
        CategoryDataset dataset = getCategoryDataset();
        JFreeChart chart = ChartFactory.createBarChart("2010年上半年销售量", // 图表标题
                "月份", // x轴标签
                "销售量(单位:本)", // y轴标签
                dataset, // 数据集
                PlotOrientation.VERTICAL, // 图表方向:水平、垂直
                false, // 是否显示图例(对于简单的柱状图必须是false)
                false, // 是否生成工具
                false // 是否生成URL链接
                );

        return chart;
    }

    /**
     * 修改字体
     *
     * @param chart
     */
    public void updateFont(JFreeChart chart) {

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.PLAIN, 20));

        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();

        CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
        // X轴字体
        categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // X轴标签字体
        categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

        ValueAxis valueAxis = categoryPlot.getRangeAxis();
        // y轴字体
        valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // y轴标签字体
        valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

    }
    
    /**
     * 更新图表显示
     * @param chart
     */
    private void updatePlot(JFreeChart chart){
        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();
        //Y轴
        ValueAxis valueAxis = categoryPlot.getRangeAxis();
        //Y轴尺度标签
        valueAxis.setVerticalTickLabels(true);    
    }

    /**
     * 设置图表
     *
     * @param chart
     */
    public void createPlot() {
        JFreeChart chart = getJFreeChart();
        // 修改字体
        updateFont(chart);
        //修改图表
        updatePlot(chart);
        // 把JFreeChart面板保存在窗体里
        setContentPane(new ChartPanel(chart));
    }

    public static void main(String[] args) {
        BarDemo16 barDemo = new BarDemo16("柱形图实例");
        barDemo.createPlot();
        barDemo.pack();
        // 把窗体显示到显示器中央
        RefineryUtilities.centerFrameOnScreen(barDemo);
        // 设置可以显示
        barDemo.setVisible(true);

    }

实例202  Y轴起始值
    public BarDemo21(String title) {
        super(title);
    }

    /**
     * 创建一个数据集
     *
     * @return
     */
    private CategoryDataset getCategoryDataset() {

        DefaultKeyedValues keyedValues = new DefaultKeyedValues();
        keyedValues.addValue("1月", 310);
        keyedValues.addValue("2月", 489);
        keyedValues.addValue("3月", 512);
        keyedValues.addValue("4月", 589);
        keyedValues.addValue("5月", 359);
        keyedValues.addValue("6月", 402);
        CategoryDataset dataset = DatasetUtilities.createCategoryDataset(
                "java book", keyedValues);
        return dataset;
    }

    /**
     * 生成JFreeChart
     *
     * @return
     */
    private JFreeChart getJFreeChart() {
        CategoryDataset dataset = getCategoryDataset();
        JFreeChart chart = ChartFactory.createBarChart("2010年上半年销售量", // 图表标题
                "月份", // x轴标签
                "销售量(单位:本)", // y轴标签
                dataset, // 数据集
                PlotOrientation.VERTICAL, // 图表方向:水平、垂直
                false, // 是否显示图例(对于简单的柱状图必须是false)
                false, // 是否生成工具
                false // 是否生成URL链接
                );

        return chart;
    }

    /**
     * 修改字体
     *
     * @param chart
     */
    private void updateFont(JFreeChart chart) {

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.PLAIN, 20));

        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();

        CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
        // X轴字体
        categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // X轴标签字体
        categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

        ValueAxis valueAxis = categoryPlot.getRangeAxis();
        // y轴字体
        valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // y轴标签字体
        valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

    }

    /**
     * 更新图表显示
     *
     * @param chart
     */
    private void updatePlot(JFreeChart chart) {
        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();
        // y轴
        ValueAxis valueAxis = categoryPlot.getRangeAxis();
        //柱形图启始值
        valueAxis.setLowerBound(300);
    }

    /**
     * 设置图表
     *
     * @param chart
     */
    public void createPlot() {
        JFreeChart chart = getJFreeChart();
        // 修改字体
        updateFont(chart);
        // 修改图表
        updatePlot(chart);
        // 把JFreeChart面板保存在窗体里
        setContentPane(new ChartPanel(chart));
    }

    public static void main(String[] args) {
        BarDemo21 barDemo = new BarDemo21("柱形图实例");
        barDemo.createPlot();
        barDemo.pack();
        // 把窗体显示到显示器中央
        RefineryUtilities.centerFrameOnScreen(barDemo);
        // 设置可以显示
        barDemo.setVisible(true);

    }


实例203  Y轴箭头
    public BarDemo23(String title) {
        super(title);
    }

    /**
     * 创建一个数据集
     *
     * @return
     */
    private CategoryDataset getCategoryDataset() {

        DefaultKeyedValues keyedValues = new DefaultKeyedValues();
        keyedValues.addValue("1月", 310);
        keyedValues.addValue("2月", 489);
        keyedValues.addValue("3月", 512);
        keyedValues.addValue("4月", 589);
        keyedValues.addValue("5月", 359);
        keyedValues.addValue("6月", 402);
        CategoryDataset dataset = DatasetUtilities.createCategoryDataset(
                "java book", keyedValues);
        return dataset;
    }

    /**
     * 生成JFreeChart
     *
     * @return
     */
    private JFreeChart getJFreeChart() {
        CategoryDataset dataset = getCategoryDataset();
        JFreeChart chart = ChartFactory.createBarChart("2010年上半年销售量", // 图表标题
                "月份", // x轴标签
                "销售量(单位:本)", // y轴标签
                dataset, // 数据集
                PlotOrientation.VERTICAL, // 图表方向:水平、垂直
                false, // 是否显示图例(对于简单的柱状图必须是false)
                false, // 是否生成工具
                false // 是否生成URL链接
                );

        return chart;
    }

    /**
     * 修改字体
     *
     * @param chart
     */
    private void updateFont(JFreeChart chart) {

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.PLAIN, 20));

        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();

        CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
        // X轴字体
        categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // X轴标签字体
        categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

        ValueAxis valueAxis = categoryPlot.getRangeAxis();
        // y轴字体
        valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // y轴标签字体
        valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

    }

    /**
     * 更新图表显示
     *
     * @param chart
     */
    private void updatePlot(JFreeChart chart) {
        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();
        // y轴
        ValueAxis valueAxis = categoryPlot.getRangeAxis();
        // 是否显示Y轴向上箭头
        valueAxis.setPositiveArrowVisible(true);
        // 是否显示Y轴向下箭头
        // valueAxis.setNegativeArrowVisible(true);
    }

    /**
     * 设置图表
     *
     * @param chart
     */
    public void createPlot() {
        JFreeChart chart = getJFreeChart();
        // 修改字体
        updateFont(chart);
        // 修改图表
        updatePlot(chart);
        // 把JFreeChart面板保存在窗体里
        setContentPane(new ChartPanel(chart));
    }

    public static void main(String[] args) {
        BarDemo23 barDemo = new BarDemo23("柱形图实例");
        barDemo.createPlot();
        barDemo.pack();
        // 把窗体显示到显示器中央
        RefineryUtilities.centerFrameOnScreen(barDemo);
        // 设置可以显示
        barDemo.setVisible(true);

    }


实例204  Y轴主要刻度线
    public BarDemo25(String title) {
        super(title);
    }

    /**
     * 创建一个数据集
     *
     * @return
     */
    private CategoryDataset getCategoryDataset() {

        DefaultKeyedValues keyedValues = new DefaultKeyedValues();
        keyedValues.addValue("1月", 310);
        keyedValues.addValue("2月", 489);
        keyedValues.addValue("3月", 512);
        keyedValues.addValue("4月", 589);
        keyedValues.addValue("5月", 359);
        keyedValues.addValue("6月", 402);
        CategoryDataset dataset = DatasetUtilities.createCategoryDataset(
                "java book", keyedValues);
        return dataset;
    }

    /**
     * 生成JFreeChart
     *
     * @return
     */
    private JFreeChart getJFreeChart() {
        CategoryDataset dataset = getCategoryDataset();
        JFreeChart chart = ChartFactory.createBarChart("2010年上半年销售量", // 图表标题
                "月份", // x轴标签
                "销售量(单位:本)", // y轴标签
                dataset, // 数据集
                PlotOrientation.VERTICAL, // 图表方向:水平、垂直
                false, // 是否显示图例(对于简单的柱状图必须是false)
                false, // 是否生成工具
                false // 是否生成URL链接
                );

        return chart;
    }

    /**
     * 修改字体
     *
     * @param chart
     */
    private void updateFont(JFreeChart chart) {

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.PLAIN, 20));

        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();

        CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
        // X轴字体
        categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // X轴标签字体
        categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

        ValueAxis valueAxis = categoryPlot.getRangeAxis();
        // y轴字体
        valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // y轴标签字体
        valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

    }

    /**
     * 更新图表显示
     *
     * @param chart
     */
    private void updatePlot(JFreeChart chart) {
        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();
        // y轴
        ValueAxis valueAxis = categoryPlot.getRangeAxis();
        //刻度线是否显示
        valueAxis.setTickMarksVisible(false);
    
    }

    /**
     * 设置图表
     *
     * @param chart
     */
    public void createPlot() {
        JFreeChart chart = getJFreeChart();
        // 修改字体
        updateFont(chart);
        // 修改图表
        updatePlot(chart);
        // 把JFreeChart面板保存在窗体里
        setContentPane(new ChartPanel(chart));
    }

    public static void main(String[] args) {
        BarDemo25 barDemo = new BarDemo25("柱形图实例");
        barDemo.createPlot();
        barDemo.pack();
        // 把窗体显示到显示器中央
        RefineryUtilities.centerFrameOnScreen(barDemo);
        // 设置可以显示
        barDemo.setVisible(true);

    }


实例205  Y轴主要刻度线长度
    public BarDemo26(String title) {
        super(title);
    }

    /**
     * 创建一个数据集
     *
     * @return
     */
    private CategoryDataset getCategoryDataset() {

        DefaultKeyedValues keyedValues = new DefaultKeyedValues();
        keyedValues.addValue("1月", 310);
        keyedValues.addValue("2月", 489);
        keyedValues.addValue("3月", 512);
        keyedValues.addValue("4月", 589);
        keyedValues.addValue("5月", 359);
        keyedValues.addValue("6月", 402);
        CategoryDataset dataset = DatasetUtilities.createCategoryDataset(
                "java book", keyedValues);
        return dataset;
    }

    /**
     * 生成JFreeChart
     *
     * @return
     */
    private JFreeChart getJFreeChart() {
        CategoryDataset dataset = getCategoryDataset();
        JFreeChart chart = ChartFactory.createBarChart("2010年上半年销售量", // 图表标题
                "月份", // x轴标签
                "销售量(单位:本)", // y轴标签
                dataset, // 数据集
                PlotOrientation.VERTICAL, // 图表方向:水平、垂直
                false, // 是否显示图例(对于简单的柱状图必须是false)
                false, // 是否生成工具
                false // 是否生成URL链接
                );
        return chart;
    }

    /**
     * 修改字体
     *
     * @param chart
     */
    private void updateFont(JFreeChart chart) {

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.PLAIN, 20));

        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();

        CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
        // X轴字体
        categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // X轴标签字体
        categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

        ValueAxis valueAxis = categoryPlot.getRangeAxis();
        // y轴字体
        valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // y轴标签字体
        valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

    }

    /**
     * 更新图表显示
     *
     * @param chart
     */
    private void updatePlot(JFreeChart chart) {
        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();
        // y轴
        ValueAxis valueAxis = categoryPlot.getRangeAxis();
        //刻度线是否显示
        valueAxis.setTickMarksVisible(true);
        //内部刻度线
        valueAxis.setTickMarkInsideLength(200);
        //外部刻度线
        //valueAxis.setTickMarkOutsideLength(20);
    }

    /**
     * 设置图表
     *
     * @param chart
     */
    public void createPlot() {
        JFreeChart chart = getJFreeChart();
        // 修改字体
        updateFont(chart);
        // 修改图表
        updatePlot(chart);
        // 把JFreeChart面板保存在窗体里
        setContentPane(new ChartPanel(chart));
    }

    public static void main(String[] args) {
        BarDemo26 barDemo = new BarDemo26("柱形图实例");
        barDemo.createPlot();
        barDemo.pack();
        // 把窗体显示到显示器中央
        RefineryUtilities.centerFrameOnScreen(barDemo);
        // 设置可以显示
        barDemo.setVisible(true);

    }


实例206  Y轴次要刻度线
    public BarDemo22(String title) {
        super(title);
    }

    /**
     * 创建一个数据集
     *
     * @return
     */
    private CategoryDataset getCategoryDataset() {

        DefaultKeyedValues keyedValues = new DefaultKeyedValues();
        keyedValues.addValue("1月", 310);
        keyedValues.addValue("2月", 489);
        keyedValues.addValue("3月", 512);
        keyedValues.addValue("4月", 589);
        keyedValues.addValue("5月", 359);
        keyedValues.addValue("6月", 402);
        CategoryDataset dataset = DatasetUtilities.createCategoryDataset(
                "java book", keyedValues);
        return dataset;
    }

    /**
     * 生成JFreeChart
     *
     * @return
     */
    private JFreeChart getJFreeChart() {
        CategoryDataset dataset = getCategoryDataset();
        JFreeChart chart = ChartFactory.createBarChart("2010年上半年销售量", // 图表标题
                "月份", // x轴标签
                "销售量(单位:本)", // y轴标签
                dataset, // 数据集
                PlotOrientation.VERTICAL, // 图表方向:水平、垂直
                false, // 是否显示图例(对于简单的柱状图必须是false)
                false, // 是否生成工具
                false // 是否生成URL链接
                );

        return chart;
    }

    /**
     * 修改字体
     *
     * @param chart
     */
    private void updateFont(JFreeChart chart) {

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.PLAIN, 20));

        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();

        CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
        // X轴字体
        categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // X轴标签字体
        categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

        ValueAxis valueAxis = categoryPlot.getRangeAxis();
        // y轴字体
        valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // y轴标签字体
        valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

    }

    /**
     * 更新图表显示
     *
     * @param chart
     */
    private void updatePlot(JFreeChart chart) {
        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();
        // y轴
        ValueAxis valueAxis = categoryPlot.getRangeAxis();
        // 是否显示次要刻度线
        valueAxis.setMinorTickMarksVisible(true);
    }

    /**
     * 设置图表
     *
     * @param chart
     */
    public void createPlot() {
        JFreeChart chart = getJFreeChart();
        // 修改字体
        updateFont(chart);
        // 修改图表
        updatePlot(chart);
        // 把JFreeChart面板保存在窗体里
        setContentPane(new ChartPanel(chart));
    }

    public static void main(String[] args) {
        BarDemo22 barDemo = new BarDemo22("柱形图实例");
        barDemo.createPlot();
        barDemo.pack();
        // 把窗体显示到显示器中央
        RefineryUtilities.centerFrameOnScreen(barDemo);
        // 设置可以显示
        barDemo.setVisible(true);

    }

实例207  Y轴次要刻度线长度
    public BarDemo24(String title) {
        super(title);
    }

    /**
     * 创建一个数据集
     *
     * @return
     */
    private CategoryDataset getCategoryDataset() {

        DefaultKeyedValues keyedValues = new DefaultKeyedValues();
        keyedValues.addValue("1月", 310);
        keyedValues.addValue("2月", 489);
        keyedValues.addValue("3月", 512);
        keyedValues.addValue("4月", 589);
        keyedValues.addValue("5月", 359);
        keyedValues.addValue("6月", 402);
        CategoryDataset dataset = DatasetUtilities.createCategoryDataset(
                "java book", keyedValues);
        return dataset;
    }

    /**
     * 生成JFreeChart
     *
     * @return
     */
    private JFreeChart getJFreeChart() {
        CategoryDataset dataset = getCategoryDataset();
        JFreeChart chart = ChartFactory.createBarChart("2010年上半年销售量", // 图表标题
                "月份", // x轴标签
                "销售量(单位:本)", // y轴标签
                dataset, // 数据集
                PlotOrientation.VERTICAL, // 图表方向:水平、垂直
                false, // 是否显示图例(对于简单的柱状图必须是false)
                false, // 是否生成工具
                false // 是否生成URL链接
                );

        return chart;
    }

    /**
     * 修改字体
     *
     * @param chart
     */
    private void updateFont(JFreeChart chart) {

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.PLAIN, 20));

        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();

        CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
        // X轴字体
        categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // X轴标签字体
        categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

        ValueAxis valueAxis = categoryPlot.getRangeAxis();
        // y轴字体
        valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // y轴标签字体
        valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

    }

    /**
     * 更新图表显示
     *
     * @param chart
     */
    private void updatePlot(JFreeChart chart) {
        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();
        // y轴
        ValueAxis valueAxis = categoryPlot.getRangeAxis();
        //是否显示刻度线
        valueAxis.setMinorTickMarksVisible(true);
        //内部刻度线长线
        valueAxis.setMinorTickMarkInsideLength(600);
        //外部刻度线长线
        //valueAxis.setMinorTickMarkOutsideLength(4);
    }

    /**
     * 设置图表
     *
     * @param chart
     */
    public void createPlot() {
        JFreeChart chart = getJFreeChart();
        // 修改字体
        updateFont(chart);
        // 修改图表
        updatePlot(chart);
        // 把JFreeChart面板保存在窗体里
        setContentPane(new ChartPanel(chart));
    }

    public static void main(String[] args) {
        BarDemo24 barDemo = new BarDemo24("柱形图实例");
        barDemo.createPlot();
        barDemo.pack();
        // 把窗体显示到显示器中央
        RefineryUtilities.centerFrameOnScreen(barDemo);
        // 设置可以显示
        barDemo.setVisible(true);

    }


实例208  设置Y轴最大值
    public BarDemo27(String title) {
        super(title);
    }

    /**
     * 创建一个数据集
     *
     * @return
     */
    private CategoryDataset getCategoryDataset() {

        DefaultKeyedValues keyedValues = new DefaultKeyedValues();
        keyedValues.addValue("1月", 310);
        keyedValues.addValue("2月", 489);
        keyedValues.addValue("3月", 512);
        keyedValues.addValue("4月", 589);
        keyedValues.addValue("5月", 359);
        keyedValues.addValue("6月", 402);
        CategoryDataset dataset = DatasetUtilities.createCategoryDataset(
                "java book", keyedValues);
        return dataset;
    }

    /**
     * 生成JFreeChart
     *
     * @return
     */
    private JFreeChart getJFreeChart() {
        CategoryDataset dataset = getCategoryDataset();
        JFreeChart chart = ChartFactory.createBarChart("2010年上半年销售量", // 图表标题
                "月份", // x轴标签
                "销售量(单位:本)", // y轴标签
                dataset, // 数据集
                PlotOrientation.VERTICAL, // 图表方向:水平、垂直
                false, // 是否显示图例(对于简单的柱状图必须是false)
                false, // 是否生成工具
                false // 是否生成URL链接
                );
        return chart;
    }

    /**
     * 修改字体
     *
     * @param chart
     */
    private void updateFont(JFreeChart chart) {

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.PLAIN, 20));

        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();

        CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
        // X轴字体
        categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // X轴标签字体
        categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

        ValueAxis valueAxis = categoryPlot.getRangeAxis();
        // y轴字体
        valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // y轴标签字体
        valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

    }

    /**
     * 更新图表显示
     *
     * @param chart
     */
    private void updatePlot(JFreeChart chart) {
        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();
        // y轴
        ValueAxis valueAxis = categoryPlot.getRangeAxis();
        //Y轴最大值
        valueAxis.setUpperBound(800);

    }

    /**
     * 设置图表
     *
     * @param chart
     */
    public void createPlot() {
        JFreeChart chart = getJFreeChart();
        // 修改字体
        updateFont(chart);
        // 修改图表
        updatePlot(chart);
        // 把JFreeChart面板保存在窗体里
        setContentPane(new ChartPanel(chart));
    }

    public static void main(String[] args) {
        BarDemo27 barDemo = new BarDemo27("柱形图实例");
        barDemo.createPlot();
        barDemo.pack();
        // 把窗体显示到显示器中央
        RefineryUtilities.centerFrameOnScreen(barDemo);
        // 设置可以显示
        barDemo.setVisible(true);

    }

实例209  设置Y轴数据范围
    public BarDemo28(String title) {
        super(title);
    }

    /**
     * 创建一个数据集
     *
     * @return
     */
    private CategoryDataset getCategoryDataset() {

        DefaultKeyedValues keyedValues = new DefaultKeyedValues();
        keyedValues.addValue("1月", 310);
        keyedValues.addValue("2月", 489);
        keyedValues.addValue("3月", 512);
        keyedValues.addValue("4月", 589);
        keyedValues.addValue("5月", 359);
        keyedValues.addValue("6月", 402);
        CategoryDataset dataset = DatasetUtilities.createCategoryDataset(
                "java book", keyedValues);
        return dataset;
    }

    /**
     * 生成JFreeChart
     *
     * @return
     */
    private JFreeChart getJFreeChart() {
        CategoryDataset dataset = getCategoryDataset();
        JFreeChart chart = ChartFactory.createBarChart("2010年上半年销售量", // 图表标题
                "月份", // x轴标签
                "销售量(单位:本)", // y轴标签
                dataset, // 数据集
                PlotOrientation.VERTICAL, // 图表方向:水平、垂直
                false, // 是否显示图例(对于简单的柱状图必须是false)
                false, // 是否生成工具
                false // 是否生成URL链接
                );
        return chart;
    }

    /**
     * 修改字体
     *
     * @param chart
     */
    private void updateFont(JFreeChart chart) {

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.PLAIN, 20));

        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();

        CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
        // X轴字体
        categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // X轴标签字体
        categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

        ValueAxis valueAxis = categoryPlot.getRangeAxis();
        // y轴字体
        valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // y轴标签字体
        valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

    }

    /**
     * 更新图表显示
     *
     * @param chart
     */
    private void updatePlot(JFreeChart chart) {
        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();
        // y轴
        ValueAxis valueAxis = categoryPlot.getRangeAxis();
        //Y轴数据范围
        valueAxis.setRangeAboutValue(200,  1000);

    }

    /**
     * 设置图表
     *
     * @param chart
     */
    public void createPlot() {
        JFreeChart chart = getJFreeChart();
        // 修改字体
        updateFont(chart);
        // 修改图表
        updatePlot(chart);
        // 把JFreeChart面板保存在窗体里
        setContentPane(new ChartPanel(chart));
    }

    public static void main(String[] args) {
        BarDemo28 barDemo = new BarDemo28("柱形图实例");
        barDemo.createPlot();
        barDemo.pack();
        // 把窗体显示到显示器中央
        RefineryUtilities.centerFrameOnScreen(barDemo);
        // 设置可以显示
        barDemo.setVisible(true);

    }

实例210  Y轴的显示位置
    public BarDemo39(String title) {
        super(title);
    }

    /**
     * 创建一个数据集
     *
     * @return
     */
    private CategoryDataset getCategoryDataset() {

        DefaultKeyedValues keyedValues = new DefaultKeyedValues();
        keyedValues.addValue("1月", 310);
        keyedValues.addValue("2月", 489);
        keyedValues.addValue("3月", 512);
        keyedValues.addValue("4月", 589);
        keyedValues.addValue("5月", 359);
        keyedValues.addValue("6月", 402);
        CategoryDataset dataset = DatasetUtilities.createCategoryDataset(
                "JAVA图书", keyedValues);
        return dataset;
    }

    /**
     * 生成JFreeChart
     *
     * @return
     */
    private JFreeChart getJFreeChart() {
        CategoryDataset dataset = getCategoryDataset();
        JFreeChart chart = ChartFactory.createBarChart("2010年上半年销售量", // 图表标题
                "月份", // x轴标签
                "销售量(单位:本)", // y轴标签
                dataset, // 数据集
                PlotOrientation.VERTICAL, // 图表方向:水平、垂直
                true, // 是否显示图例(对于简单的柱状图必须是false)
                false, // 是否生成工具
                false // 是否生成URL链接
                );
        return chart;
    }

    /**
     * 修改字体
     *
     * @param chart
     */
    private void updateFont(JFreeChart chart) {

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
        LegendTitle legendTitle = chart.getLegend();
        legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();

        CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
        // X轴字体
        categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // X轴标签字体
        categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

        ValueAxis valueAxis = categoryPlot.getRangeAxis();
        // y轴字体
        valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // y轴标签字体
        valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

    }

    /**
     * 更新图表显示
     *
     * @param chart
     */
    private void updatePlot(JFreeChart chart) {
        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();
        // 设置Y轴显示位置
        categoryPlot.setRangeAxisLocation(AxisLocation.TOP_OR_RIGHT);

    }

    /**
     * 设置图表
     *
     * @param chart
     */
    public void createPlot() {
        JFreeChart chart = getJFreeChart();
        // 修改字体
        updateFont(chart);
        // 修改图表
        updatePlot(chart);
        // 把JFreeChart面板保存在窗体里
        setContentPane(new ChartPanel(chart));
    }

    public static void main(String[] args) {
        BarDemo39 barDemo = new BarDemo39("柱形图实例");
        barDemo.createPlot();
        barDemo.pack();
        // 把窗体显示到显示器中央
        RefineryUtilities.centerFrameOnScreen(barDemo);
        // 设置可以显示
        barDemo.setVisible(true);

    }

8.7  高级柱形图
实例211  设置网格竖线
    public BarDemo29(String title) {
        super(title);
    }

    /**
     * 创建一个数据集
     *
     * @return
     */
    private CategoryDataset getCategoryDataset() {

        DefaultKeyedValues keyedValues = new DefaultKeyedValues();
        keyedValues.addValue("1月", 310);
        keyedValues.addValue("2月", 489);
        keyedValues.addValue("3月", 512);
        keyedValues.addValue("4月", 589);
        keyedValues.addValue("5月", 359);
        keyedValues.addValue("6月", 402);
        CategoryDataset dataset = DatasetUtilities.createCategoryDataset(
                "JAVA图书", keyedValues);
        return dataset;
    }

    /**
     * 生成JFreeChart
     *
     * @return
     */
    private JFreeChart getJFreeChart() {
        CategoryDataset dataset = getCategoryDataset();
        JFreeChart chart = ChartFactory.createBarChart("2010年上半年销售量", // 图表标题
                "月份", // x轴标签
                "销售量(单位:本)", // y轴标签
                dataset, // 数据集
                PlotOrientation.VERTICAL, // 图表方向:水平、垂直
                true, // 是否显示图例(对于简单的柱状图必须是false)
                false, // 是否生成工具
                false // 是否生成URL链接
                );
        return chart;
    }

    /**
     * 修改字体
     *
     * @param chart
     */
    private void updateFont(JFreeChart chart) {

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
        LegendTitle legendTitle = chart.getLegend();
        legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();

        CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
        // X轴字体
        categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // X轴标签字体
        categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

        ValueAxis valueAxis = categoryPlot.getRangeAxis();
        // y轴字体
        valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // y轴标签字体
        valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

    }

    /**
     * 更新图表显示
     *
     * @param chart
     */
    private void updatePlot(JFreeChart chart) {
        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();
        //设置网格竖线
        categoryPlot.setDomainGridlinesVisible(true);
    }

    /**
     * 设置图表
     *
     * @param chart
     */
    public void createPlot() {
        JFreeChart chart = getJFreeChart();
        // 修改字体
        updateFont(chart);
        // 修改图表
        updatePlot(chart);
        // 把JFreeChart面板保存在窗体里
        setContentPane(new ChartPanel(chart));
    }

    public static void main(String[] args) {
        BarDemo29 barDemo = new BarDemo29("柱形图实例");
        barDemo.createPlot();
        barDemo.pack();
        // 把窗体显示到显示器中央
        RefineryUtilities.centerFrameOnScreen(barDemo);
        // 设置可以显示
        barDemo.setVisible(true);

    }

实例212  设置网格竖线颜色
    public BarDemo30(String title) {
        super(title);
    }

    /**
     * 创建一个数据集
     *
     * @return
     */
    private CategoryDataset getCategoryDataset() {

        DefaultKeyedValues keyedValues = new DefaultKeyedValues();
        keyedValues.addValue("1月", 310);
        keyedValues.addValue("2月", 489);
        keyedValues.addValue("3月", 512);
        keyedValues.addValue("4月", 589);
        keyedValues.addValue("5月", 359);
        keyedValues.addValue("6月", 402);
        CategoryDataset dataset = DatasetUtilities.createCategoryDataset(
                "JAVA图书", keyedValues);
        return dataset;
    }

    /**
     * 生成JFreeChart
     *
     * @return
     */
    private JFreeChart getJFreeChart() {
        CategoryDataset dataset = getCategoryDataset();
        JFreeChart chart = ChartFactory.createBarChart("2010年上半年销售量", // 图表标题
                "月份", // x轴标签
                "销售量(单位:本)", // y轴标签
                dataset, // 数据集
                PlotOrientation.VERTICAL, // 图表方向:水平、垂直
                true, // 是否显示图例(对于简单的柱状图必须是false)
                false, // 是否生成工具
                false // 是否生成URL链接
                );
        return chart;
    }

    /**
     * 修改字体
     *
     * @param chart
     */
    private void updateFont(JFreeChart chart) {

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
        LegendTitle legendTitle = chart.getLegend();
        legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();

        CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
        // X轴字体
        categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // X轴标签字体
        categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

        ValueAxis valueAxis = categoryPlot.getRangeAxis();
        // y轴字体
        valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // y轴标签字体
        valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

    }

    /**
     * 更新图表显示
     *
     * @param chart
     */
    private void updatePlot(JFreeChart chart) {
        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();
        //设置网格竖线
        categoryPlot.setDomainGridlinesVisible(true);
        categoryPlot.setDomainGridlinePaint(Color.blue);
        
    }

    /**
     * 设置图表
     *
     * @param chart
     */
    public void createPlot() {
        JFreeChart chart = getJFreeChart();
        // 修改字体
        updateFont(chart);
        // 修改图表
        updatePlot(chart);
        // 把JFreeChart面板保存在窗体里
        setContentPane(new ChartPanel(chart));
    }

    public static void main(String[] args) {
        BarDemo30 barDemo = new BarDemo30("柱形图实例");
        barDemo.createPlot();
        barDemo.pack();
        // 把窗体显示到显示器中央
        RefineryUtilities.centerFrameOnScreen(barDemo);
        // 设置可以显示
        barDemo.setVisible(true);

    }

实例213  设置柱形图文本注解
    public BarDemo31(String title) {
        super(title);
    }

    /**
     * 创建一个数据集
     *
     * @return
     */
    private CategoryDataset getCategoryDataset() {

        DefaultKeyedValues keyedValues = new DefaultKeyedValues();
        keyedValues.addValue("1月", 310);
        keyedValues.addValue("2月", 489);
        keyedValues.addValue("3月", 512);
        keyedValues.addValue("4月", 589);
        keyedValues.addValue("5月", 359);
        keyedValues.addValue("6月", 402);
        CategoryDataset dataset = DatasetUtilities.createCategoryDataset(
                "JAVA图书", keyedValues);
        return dataset;
    }

    /**
     * 生成JFreeChart
     *
     * @return
     */
    private JFreeChart getJFreeChart() {
        CategoryDataset dataset = getCategoryDataset();
        JFreeChart chart = ChartFactory.createBarChart("2010年上半年销售量", // 图表标题
                "月份", // x轴标签
                "销售量(单位:本)", // y轴标签
                dataset, // 数据集
                PlotOrientation.VERTICAL, // 图表方向:水平、垂直
                true, // 是否显示图例(对于简单的柱状图必须是false)
                false, // 是否生成工具
                false // 是否生成URL链接
                );
        return chart;
    }

    /**
     * 修改字体
     *
     * @param chart
     */
    private void updateFont(JFreeChart chart) {

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
        LegendTitle legendTitle = chart.getLegend();
        legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();

        CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
        // X轴字体
        categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // X轴标签字体
        categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

        ValueAxis valueAxis = categoryPlot.getRangeAxis();
        // y轴字体
        valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // y轴标签字体
        valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

    }

    /**
     * 更新图表显示
     *
     * @param chart
     */
    private void updatePlot(JFreeChart chart) {
        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();
        //设置注释
        CategoryTextAnnotation annotation = new CategoryTextAnnotation("310","1月",320);
        CategoryTextAnnotation annotation1 = new CategoryTextAnnotation("489","2月",499);
        CategoryTextAnnotation annotation2 = new CategoryTextAnnotation("512","3月",522);
        CategoryTextAnnotation annotation3 = new CategoryTextAnnotation("589","4月",599);
        CategoryTextAnnotation annotation4 = new CategoryTextAnnotation("359","5月",369);
        CategoryTextAnnotation annotation5 = new CategoryTextAnnotation("402","6月",412);
        
        categoryPlot.addAnnotation(annotation);
        categoryPlot.addAnnotation(annotation1);
        categoryPlot.addAnnotation(annotation2);
        categoryPlot.addAnnotation(annotation3);
        categoryPlot.addAnnotation(annotation4);
        categoryPlot.addAnnotation(annotation5);
    }

    /**
     * 设置图表
     *
     * @param chart
     */
    public void createPlot() {
        JFreeChart chart = getJFreeChart();
        // 修改字体
        updateFont(chart);
        // 修改图表
        updatePlot(chart);
        // 把JFreeChart面板保存在窗体里
        setContentPane(new ChartPanel(chart));
    }

    public static void main(String[] args) {
        BarDemo31 barDemo = new BarDemo31("柱形图实例");
        barDemo.createPlot();
        barDemo.pack();
        // 把窗体显示到显示器中央
        RefineryUtilities.centerFrameOnScreen(barDemo);
        // 设置可以显示
        barDemo.setVisible(true);

    }

实例214  设置柱形图文本注解字体
    public BarDemo32(String title) {
        super(title);
    }

    /**
     * 创建一个数据集
     *
     * @return
     */
    private CategoryDataset getCategoryDataset() {

        DefaultKeyedValues keyedValues = new DefaultKeyedValues();
        keyedValues.addValue("1月", 310);
        keyedValues.addValue("2月", 489);
        keyedValues.addValue("3月", 512);
        keyedValues.addValue("4月", 589);
        keyedValues.addValue("5月", 359);
        keyedValues.addValue("6月", 402);
        CategoryDataset dataset = DatasetUtilities.createCategoryDataset(
                "JAVA图书", keyedValues);
        return dataset;
    }

    /**
     * 生成JFreeChart
     *
     * @return
     */
    private JFreeChart getJFreeChart() {
        CategoryDataset dataset = getCategoryDataset();
        JFreeChart chart = ChartFactory.createBarChart("2010年上半年销售量", // 图表标题
                "月份", // x轴标签
                "销售量(单位:本)", // y轴标签
                dataset, // 数据集
                PlotOrientation.VERTICAL, // 图表方向:水平、垂直
                true, // 是否显示图例(对于简单的柱状图必须是false)
                false, // 是否生成工具
                false // 是否生成URL链接
                );
        return chart;
    }

    /**
     * 修改字体
     *
     * @param chart
     */
    private void updateFont(JFreeChart chart) {

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
        LegendTitle legendTitle = chart.getLegend();
        legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();

        CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
        // X轴字体
        categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // X轴标签字体
        categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

        ValueAxis valueAxis = categoryPlot.getRangeAxis();
        // y轴字体
        valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // y轴标签字体
        valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

    }

    /**
     * 更新图表显示
     *
     * @param chart
     */
    private void updatePlot(JFreeChart chart) {
        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();
        //设置注释
        CategoryTextAnnotation annotation = new CategoryTextAnnotation("310","1月",320);
        CategoryTextAnnotation annotation1 = new CategoryTextAnnotation("489","2月",499);
        CategoryTextAnnotation annotation2 = new CategoryTextAnnotation("512","3月",522);
        CategoryTextAnnotation annotation3 = new CategoryTextAnnotation("589","4月",599);
        CategoryTextAnnotation annotation4 = new CategoryTextAnnotation("359","5月",369);
        CategoryTextAnnotation annotation5 = new CategoryTextAnnotation("402","6月",412);
        //设置注释字体
        annotation.setFont(new Font("宋体", Font.PLAIN, 15));
        annotation1.setFont(new Font("宋体", Font.PLAIN, 15));
        annotation2.setFont(new Font("宋体", Font.PLAIN, 15));
        annotation3.setFont(new Font("宋体", Font.PLAIN, 15));
        annotation4.setFont(new Font("宋体", Font.PLAIN, 15));
        annotation5.setFont(new Font("宋体", Font.PLAIN, 15));
        //添加注释
        categoryPlot.addAnnotation(annotation);
        categoryPlot.addAnnotation(annotation1);
        categoryPlot.addAnnotation(annotation2);
        categoryPlot.addAnnotation(annotation3);
        categoryPlot.addAnnotation(annotation4);
        categoryPlot.addAnnotation(annotation5);
    }

    /**
     * 设置图表
     *
     * @param chart
     */
    public void createPlot() {
        JFreeChart chart = getJFreeChart();
        // 修改字体
        updateFont(chart);
        // 修改图表
        updatePlot(chart);
        // 把JFreeChart面板保存在窗体里
        setContentPane(new ChartPanel(chart));
    }

    public static void main(String[] args) {
        BarDemo32 barDemo = new BarDemo32("柱形图实例");
        barDemo.createPlot();
        barDemo.pack();
        // 把窗体显示到显示器中央
        RefineryUtilities.centerFrameOnScreen(barDemo);
        // 设置可以显示
        barDemo.setVisible(true);

    }

实例215  设置柱形图文本注解颜色
    public BarDemo33(String title) {
        super(title);
    }

    /**
     * 创建一个数据集
     *
     * @return
     */
    private CategoryDataset getCategoryDataset() {

        DefaultKeyedValues keyedValues = new DefaultKeyedValues();
        keyedValues.addValue("1月", 310);
        keyedValues.addValue("2月", 489);
        keyedValues.addValue("3月", 512);
        keyedValues.addValue("4月", 589);
        keyedValues.addValue("5月", 359);
        keyedValues.addValue("6月", 402);
        CategoryDataset dataset = DatasetUtilities.createCategoryDataset(
                "JAVA图书", keyedValues);
        return dataset;
    }

    /**
     * 生成JFreeChart
     *
     * @return
     */
    private JFreeChart getJFreeChart() {
        CategoryDataset dataset = getCategoryDataset();
        JFreeChart chart = ChartFactory.createBarChart("2010年上半年销售量", // 图表标题
                "月份", // x轴标签
                "销售量(单位:本)", // y轴标签
                dataset, // 数据集
                PlotOrientation.VERTICAL, // 图表方向:水平、垂直
                true, // 是否显示图例(对于简单的柱状图必须是false)
                false, // 是否生成工具
                false // 是否生成URL链接
                );
        return chart;
    }

    /**
     * 修改字体
     *
     * @param chart
     */
    private void updateFont(JFreeChart chart) {

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
        LegendTitle legendTitle = chart.getLegend();
        legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();

        CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
        // X轴字体
        categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // X轴标签字体
        categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

        ValueAxis valueAxis = categoryPlot.getRangeAxis();
        // y轴字体
        valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // y轴标签字体
        valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

    }

    /**
     * 更新图表显示
     *
     * @param chart
     */
    private void updatePlot(JFreeChart chart) {
        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();
        //设置注释
        CategoryTextAnnotation annotation = new CategoryTextAnnotation("310","1月",320);
        CategoryTextAnnotation annotation1 = new CategoryTextAnnotation("489","2月",499);
        CategoryTextAnnotation annotation2 = new CategoryTextAnnotation("512","3月",522);
        CategoryTextAnnotation annotation3 = new CategoryTextAnnotation("589","4月",599);
        CategoryTextAnnotation annotation4 = new CategoryTextAnnotation("359","5月",369);
        CategoryTextAnnotation annotation5 = new CategoryTextAnnotation("402","6月",412);
        //设置注释字体
        annotation.setFont(new Font("宋体", Font.PLAIN, 15));
        annotation1.setFont(new Font("宋体", Font.PLAIN, 15));
        annotation2.setFont(new Font("宋体", Font.PLAIN, 15));
        annotation3.setFont(new Font("宋体", Font.PLAIN, 15));
        annotation4.setFont(new Font("宋体", Font.PLAIN, 15));
        annotation5.setFont(new Font("宋体", Font.PLAIN, 15));

        //设置注释颜色
        annotation.setPaint(Color.WHITE);
        annotation1.setPaint(Color.WHITE);
        annotation2.setPaint(Color.WHITE);
        annotation3.setPaint(Color.WHITE);
        annotation4.setPaint(Color.WHITE);
        annotation5.setPaint(Color.WHITE);
        
        //添加注释
        categoryPlot.addAnnotation(annotation);
        categoryPlot.addAnnotation(annotation1);
        categoryPlot.addAnnotation(annotation2);
        categoryPlot.addAnnotation(annotation3);
        categoryPlot.addAnnotation(annotation4);
        categoryPlot.addAnnotation(annotation5);
    }

    /**
     * 设置图表
     *
     * @param chart
     */
    public void createPlot() {
        JFreeChart chart = getJFreeChart();
        // 修改字体
        updateFont(chart);
        // 修改图表
        updatePlot(chart);
        // 把JFreeChart面板保存在窗体里
        setContentPane(new ChartPanel(chart));
    }

    public static void main(String[] args) {
        BarDemo33 barDemo = new BarDemo33("柱形图实例");
        barDemo.createPlot();
        barDemo.pack();
        // 把窗体显示到显示器中央
        RefineryUtilities.centerFrameOnScreen(barDemo);
        // 设置可以显示
        barDemo.setVisible(true);

    }


实例216  设置柱形图文本注解锚点
    public BarDemo34(String title) {
        super(title);
    }

    /**
     * 创建一个数据集
     *
     * @return
     */
    private CategoryDataset getCategoryDataset() {

        DefaultKeyedValues keyedValues = new DefaultKeyedValues();
        keyedValues.addValue("1月", 310);
        keyedValues.addValue("2月", 489);
        keyedValues.addValue("3月", 512);
        keyedValues.addValue("4月", 589);
        keyedValues.addValue("5月", 359);
        keyedValues.addValue("6月", 402);
        CategoryDataset dataset = DatasetUtilities.createCategoryDataset(
                "JAVA图书", keyedValues);
        return dataset;
    }

    /**
     * 生成JFreeChart
     *
     * @return
     */
    private JFreeChart getJFreeChart() {
        CategoryDataset dataset = getCategoryDataset();
        JFreeChart chart = ChartFactory.createBarChart("2010年上半年销售量", // 图表标题
                "月份", // x轴标签
                "销售量(单位:本)", // y轴标签
                dataset, // 数据集
                PlotOrientation.VERTICAL, // 图表方向:水平、垂直
                true, // 是否显示图例(对于简单的柱状图必须是false)
                false, // 是否生成工具
                false // 是否生成URL链接
                );
        return chart;
    }

    /**
     * 修改字体
     *
     * @param chart
     */
    private void updateFont(JFreeChart chart) {

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
        LegendTitle legendTitle = chart.getLegend();
        legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();

        CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
        // X轴字体
        categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // X轴标签字体
        categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

        ValueAxis valueAxis = categoryPlot.getRangeAxis();
        // y轴字体
        valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // y轴标签字体
        valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

    }

    /**
     * 更新图表显示
     *
     * @param chart
     */
    private void updatePlot(JFreeChart chart) {
        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();
        //设置注释
        CategoryTextAnnotation annotation = new CategoryTextAnnotation("310","1月",310);
        CategoryTextAnnotation annotation1 = new CategoryTextAnnotation("489","2月",489);
        CategoryTextAnnotation annotation2 = new CategoryTextAnnotation("512","3月",512);
        CategoryTextAnnotation annotation3 = new CategoryTextAnnotation("589","4月",589);
        CategoryTextAnnotation annotation4 = new CategoryTextAnnotation("359","5月",359);
        CategoryTextAnnotation annotation5 = new CategoryTextAnnotation("402","6月",402);
        //设置注释文本锚点
        annotation.setTextAnchor(TextAnchor.BASELINE_RIGHT);
        annotation1.setTextAnchor(TextAnchor.BASELINE_RIGHT);
        annotation2.setTextAnchor(TextAnchor.BASELINE_RIGHT);
        annotation3.setTextAnchor(TextAnchor.BASELINE_RIGHT);
        annotation4.setTextAnchor(TextAnchor.BASELINE_RIGHT);
        annotation5.setTextAnchor(TextAnchor.BASELINE_RIGHT);
        //添加注释
        categoryPlot.addAnnotation(annotation);
        categoryPlot.addAnnotation(annotation1);
        categoryPlot.addAnnotation(annotation2);
        categoryPlot.addAnnotation(annotation3);
        categoryPlot.addAnnotation(annotation4);
        categoryPlot.addAnnotation(annotation5);
    }

    /**
     * 设置图表
     *
     * @param chart
     */
    public void createPlot() {
        JFreeChart chart = getJFreeChart();
        // 修改字体
        updateFont(chart);
        // 修改图表
        updatePlot(chart);
        // 把JFreeChart面板保存在窗体里
        setContentPane(new ChartPanel(chart));
    }

    public static void main(String[] args) {
        BarDemo34 barDemo = new BarDemo34("柱形图实例");
        barDemo.createPlot();
        barDemo.pack();
        // 把窗体显示到显示器中央
        RefineryUtilities.centerFrameOnScreen(barDemo);
        // 设置可以显示
        barDemo.setVisible(true);

    }


实例217  设置柱形图文本注解类别锚点
    public BarDemo35(String title) {
        super(title);
    }

    /**
     * 创建一个数据集
     *
     * @return
     */
    private CategoryDataset getCategoryDataset() {

        DefaultKeyedValues keyedValues = new DefaultKeyedValues();
        keyedValues.addValue("1月", 310);
        keyedValues.addValue("2月", 489);
        keyedValues.addValue("3月", 512);
        keyedValues.addValue("4月", 589);
        keyedValues.addValue("5月", 359);
        keyedValues.addValue("6月", 402);
        CategoryDataset dataset = DatasetUtilities.createCategoryDataset(
                "JAVA图书", keyedValues);
        return dataset;
    }

    /**
     * 生成JFreeChart
     *
     * @return
     */
    private JFreeChart getJFreeChart() {
        CategoryDataset dataset = getCategoryDataset();
        JFreeChart chart = ChartFactory.createBarChart("2010年上半年销售量", // 图表标题
                "月份", // x轴标签
                "销售量(单位:本)", // y轴标签
                dataset, // 数据集
                PlotOrientation.VERTICAL, // 图表方向:水平、垂直
                true, // 是否显示图例(对于简单的柱状图必须是false)
                false, // 是否生成工具
                false // 是否生成URL链接
                );
        return chart;
    }

    /**
     * 修改字体
     *
     * @param chart
     */
    private void updateFont(JFreeChart chart) {

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
        LegendTitle legendTitle = chart.getLegend();
        legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();

        CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
        // X轴字体
        categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // X轴标签字体
        categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

        ValueAxis valueAxis = categoryPlot.getRangeAxis();
        // y轴字体
        valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // y轴标签字体
        valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

    }

    /**
     * 更新图表显示
     *
     * @param chart
     */
    private void updatePlot(JFreeChart chart) {
        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();
        //设置注释
        CategoryTextAnnotation annotation = new CategoryTextAnnotation("310","1月",310);
        CategoryTextAnnotation annotation1 = new CategoryTextAnnotation("489","2月",489);
        CategoryTextAnnotation annotation2 = new CategoryTextAnnotation("512","3月",512);
        CategoryTextAnnotation annotation3 = new CategoryTextAnnotation("589","4月",589);
        CategoryTextAnnotation annotation4 = new CategoryTextAnnotation("359","5月",359);
        CategoryTextAnnotation annotation5 = new CategoryTextAnnotation("402","6月",402);
        //设置注释分类锚点
        annotation.setCategoryAnchor(CategoryAnchor.END);
        annotation1.setCategoryAnchor(CategoryAnchor.END);
        annotation2.setCategoryAnchor(CategoryAnchor.END);
        annotation3.setCategoryAnchor(CategoryAnchor.END);
        annotation4.setCategoryAnchor(CategoryAnchor.END);
        annotation5.setCategoryAnchor(CategoryAnchor.END);
        //添加注释
        categoryPlot.addAnnotation(annotation);
        categoryPlot.addAnnotation(annotation1);
        categoryPlot.addAnnotation(annotation2);
        categoryPlot.addAnnotation(annotation3);
        categoryPlot.addAnnotation(annotation4);
        categoryPlot.addAnnotation(annotation5);
    }

    /**
     * 设置图表
     *
     * @param chart
     */
    public void createPlot() {
        JFreeChart chart = getJFreeChart();
        // 修改字体
        updateFont(chart);
        // 修改图表
        updatePlot(chart);
        // 把JFreeChart面板保存在窗体里
        setContentPane(new ChartPanel(chart));
    }

    public static void main(String[] args) {
        BarDemo35 barDemo = new BarDemo35("柱形图实例");
        barDemo.createPlot();
        barDemo.pack();
        // 把窗体显示到显示器中央
        RefineryUtilities.centerFrameOnScreen(barDemo);
        // 设置可以显示
        barDemo.setVisible(true);

    }


实例218  设置柱形图文本注解旋转锚点
    public BarDemo36(String title) {
        super(title);
    }

    /**
     * 创建一个数据集
     *
     * @return
     */
    private CategoryDataset getCategoryDataset() {

        DefaultKeyedValues keyedValues = new DefaultKeyedValues();
        keyedValues.addValue("1月", 310);
        keyedValues.addValue("2月", 489);
        keyedValues.addValue("3月", 512);
        keyedValues.addValue("4月", 589);
        keyedValues.addValue("5月", 359);
        keyedValues.addValue("6月", 402);
        CategoryDataset dataset = DatasetUtilities.createCategoryDataset(
                "JAVA图书", keyedValues);
        return dataset;
    }

    /**
     * 生成JFreeChart
     *
     * @return
     */
    private JFreeChart getJFreeChart() {
        CategoryDataset dataset = getCategoryDataset();
        JFreeChart chart = ChartFactory.createBarChart("2010年上半年销售量", // 图表标题
                "月份", // x轴标签
                "销售量(单位:本)", // y轴标签
                dataset, // 数据集
                PlotOrientation.VERTICAL, // 图表方向:水平、垂直
                true, // 是否显示图例(对于简单的柱状图必须是false)
                false, // 是否生成工具
                false // 是否生成URL链接
                );
        return chart;
    }

    /**
     * 修改字体
     *
     * @param chart
     */
    private void updateFont(JFreeChart chart) {

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
        LegendTitle legendTitle = chart.getLegend();
        legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();

        CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
        // X轴字体
        categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // X轴标签字体
        categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

        ValueAxis valueAxis = categoryPlot.getRangeAxis();
        // y轴字体
        valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // y轴标签字体
        valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

    }

    /**
     * 更新图表显示
     *
     * @param chart
     */
    private void updatePlot(JFreeChart chart) {
        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();
        //设置文本注释
        CategoryTextAnnotation annotation = new CategoryTextAnnotation("310","1月",310);
        CategoryTextAnnotation annotation1 = new CategoryTextAnnotation("489","2月",489);
        CategoryTextAnnotation annotation2 = new CategoryTextAnnotation("512","3月",512);
        CategoryTextAnnotation annotation3 = new CategoryTextAnnotation("589","4月",589);
        CategoryTextAnnotation annotation4 = new CategoryTextAnnotation("359","5月",359);
        CategoryTextAnnotation annotation5 = new CategoryTextAnnotation("402","6月",402);
        //设置注释角度锚点
        annotation.setRotationAngle(Math.PI*0.2);
        annotation1.setRotationAngle(Math.PI*0.2);
        annotation2.setRotationAngle(Math.PI*0.2);
        annotation3.setRotationAngle(Math.PI*0.2);
        annotation4.setRotationAngle(Math.PI*0.2);
        annotation5.setRotationAngle(Math.PI*0.2);
        //添加注释
        categoryPlot.addAnnotation(annotation);
        categoryPlot.addAnnotation(annotation1);
        categoryPlot.addAnnotation(annotation2);
        categoryPlot.addAnnotation(annotation3);
        categoryPlot.addAnnotation(annotation4);
        categoryPlot.addAnnotation(annotation5);
    }

    /**
     * 设置图表
     *
     * @param chart
     */
    public void createPlot() {
        JFreeChart chart = getJFreeChart();
        // 修改字体
        updateFont(chart);
        // 修改图表
        updatePlot(chart);
        // 把JFreeChart面板保存在窗体里
        setContentPane(new ChartPanel(chart));
    }

    public static void main(String[] args) {
        BarDemo36 barDemo = new BarDemo36("柱形图实例");
        barDemo.createPlot();
        barDemo.pack();
        // 把窗体显示到显示器中央
        RefineryUtilities.centerFrameOnScreen(barDemo);
        // 设置可以显示
        barDemo.setVisible(true);

    }


实例219  设置柱形图线条注解
    public BarDemo37(String title) {
        super(title);
    }

    /**
     * 创建一个数据集
     *
     * @return
     */
    private CategoryDataset getCategoryDataset() {

        DefaultKeyedValues keyedValues = new DefaultKeyedValues();
        keyedValues.addValue("1月", 310);
        keyedValues.addValue("2月", 489);
        keyedValues.addValue("3月", 512);
        keyedValues.addValue("4月", 589);
        keyedValues.addValue("5月", 359);
        keyedValues.addValue("6月", 402);
        CategoryDataset dataset = DatasetUtilities.createCategoryDataset(
                "JAVA图书", keyedValues);
        return dataset;
    }

    /**
     * 生成JFreeChart
     *
     * @return
     */
    private JFreeChart getJFreeChart() {
        CategoryDataset dataset = getCategoryDataset();
        JFreeChart chart = ChartFactory.createBarChart("2010年上半年销售量", // 图表标题
                "月份", // x轴标签
                "销售量(单位:本)", // y轴标签
                dataset, // 数据集
                PlotOrientation.VERTICAL, // 图表方向:水平、垂直
                true, // 是否显示图例(对于简单的柱状图必须是false)
                false, // 是否生成工具
                false // 是否生成URL链接
                );
        return chart;
    }

    /**
     * 修改字体
     *
     * @param chart
     */
    private void updateFont(JFreeChart chart) {

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
        LegendTitle legendTitle = chart.getLegend();
        legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();

        CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
        // X轴字体
        categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // X轴标签字体
        categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

        ValueAxis valueAxis = categoryPlot.getRangeAxis();
        // y轴字体
        valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // y轴标签字体
        valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

    }

    /**
     * 更新图表显示
     *
     * @param chart
     */
    private void updatePlot(JFreeChart chart) {
        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();
        categoryPlot.getDomainAxisEdge();
        //设置线条注解
        CategoryLineAnnotation annotation = new CategoryLineAnnotation("1月",200,"2月",300,Color.blue,new BasicStroke());
        CategoryLineAnnotation annotation1 = new CategoryLineAnnotation("2月",300,"3月",100,Color.blue,new BasicStroke());
        CategoryLineAnnotation annotation2 = new CategoryLineAnnotation("3月",100,"4月",400,Color.blue,new BasicStroke());
        CategoryLineAnnotation annotation3 = new CategoryLineAnnotation("4月",400,"5月",300,Color.blue,new BasicStroke());
        CategoryLineAnnotation annotation4 = new CategoryLineAnnotation("5月",300,"6月",350,Color.blue,new BasicStroke());
        categoryPlot.addAnnotation(annotation);
        categoryPlot.addAnnotation(annotation1);
        categoryPlot.addAnnotation(annotation2);
        categoryPlot.addAnnotation(annotation3);
        categoryPlot.addAnnotation(annotation4);
    }

    /**
     * 设置图表
     *
     * @param chart
     */
    public void createPlot() {
        JFreeChart chart = getJFreeChart();
        // 修改字体
        updateFont(chart);
        // 修改图表
        updatePlot(chart);
        // 把JFreeChart面板保存在窗体里
        setContentPane(new ChartPanel(chart));
    }

    public static void main(String[] args) {
        BarDemo37 barDemo = new BarDemo37("柱形图实例");
        barDemo.createPlot();
        barDemo.pack();
        // 把窗体显示到显示器中央
        RefineryUtilities.centerFrameOnScreen(barDemo);
        // 设置可以显示
        barDemo.setVisible(true);

    }

实例220  绘制柱形效果
    public BarDemo41(String title) {
        super(title);
    }

    /**
     * 创建一个数据集
     *
     * @return
     */
    private CategoryDataset getCategoryDataset() {

        DefaultKeyedValues keyedValues = new DefaultKeyedValues();
        keyedValues.addValue("1月", 310);
        keyedValues.addValue("2月", 489);
        keyedValues.addValue("3月", 512);
        keyedValues.addValue("4月", 589);
        keyedValues.addValue("5月", 359);
        keyedValues.addValue("6月", 402);
        CategoryDataset dataset = DatasetUtilities.createCategoryDataset(
                "JAVA图书", keyedValues);
        return dataset;
    }

    /**
     * 生成JFreeChart
     *
     * @return
     */
    private JFreeChart getJFreeChart() {
        CategoryDataset dataset = getCategoryDataset();
        JFreeChart chart = ChartFactory.createBarChart("2010年上半年销售量", // 图表标题
                "月份", // x轴标签
                "销售量(单位:本)", // y轴标签
                dataset, // 数据集
                PlotOrientation.VERTICAL, // 图表方向:水平、垂直
                true, // 是否显示图例(对于简单的柱状图必须是false)
                false, // 是否生成工具
                false // 是否生成URL链接
                );
        return chart;
    }

    /**
     * 修改字体
     *
     * @param chart
     */
    private void updateFont(JFreeChart chart) {

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
        LegendTitle legendTitle = chart.getLegend();
        legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();

        CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
        // X轴字体
        categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // X轴标签字体
        categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

        ValueAxis valueAxis = categoryPlot.getRangeAxis();
        // y轴字体
        valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // y轴标签字体
        valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

    }

    /**
     * 更新图表显示
     *
     * @param chart
     */
    private void updatePlot(JFreeChart chart) {
        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();
        // 设置Y轴显示位置
        BarRenderer renderer = (BarRenderer) categoryPlot.getRenderer();
        // 普通效果
        StandardBarPainter barPainter = new StandardBarPainter();
        // 梯形效果
        // GradientBarPainter barPainter = new GradientBarPainter();
        renderer.setBarPainter(barPainter);
    }

    /**
     * 设置图表
     *
     * @param chart
     */
    public void createPlot() {
        JFreeChart chart = getJFreeChart();
        // 修改字体
        updateFont(chart);
        // 修改图表
        updatePlot(chart);
        // 把JFreeChart面板保存在窗体里
        setContentPane(new ChartPanel(chart));
    }

    public static void main(String[] args) {
        BarDemo41 barDemo = new BarDemo41("柱形图实例");
        barDemo.createPlot();
        barDemo.pack();
        // 把窗体显示到显示器中央
        RefineryUtilities.centerFrameOnScreen(barDemo);
        // 设置可以显示
        barDemo.setVisible(true);

    }


实例221  柱形图阴影
    public BarDemo42(String title) {
        super(title);
    }

    /**
     * 创建一个数据集
     *
     * @return
     */
    private CategoryDataset getCategoryDataset() {

        DefaultKeyedValues keyedValues = new DefaultKeyedValues();
        keyedValues.addValue("1月", 310);
        keyedValues.addValue("2月", 489);
        keyedValues.addValue("3月", 512);
        keyedValues.addValue("4月", 589);
        keyedValues.addValue("5月", 359);
        keyedValues.addValue("6月", 402);
        CategoryDataset dataset = DatasetUtilities.createCategoryDataset(
                "JAVA图书", keyedValues);
        return dataset;
    }

    /**
     * 生成JFreeChart
     *
     * @return
     */
    private JFreeChart getJFreeChart() {
        CategoryDataset dataset = getCategoryDataset();
        JFreeChart chart = ChartFactory.createBarChart("2010年上半年销售量", // 图表标题
                "月份", // x轴标签
                "销售量(单位:本)", // y轴标签
                dataset, // 数据集
                PlotOrientation.VERTICAL, // 图表方向:水平、垂直
                true, // 是否显示图例(对于简单的柱状图必须是false)
                false, // 是否生成工具
                false // 是否生成URL链接
                );
        return chart;
    }

    /**
     * 修改字体
     *
     * @param chart
     */
    private void updateFont(JFreeChart chart) {

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
        LegendTitle legendTitle = chart.getLegend();
        legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();

        CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
        // X轴字体
        categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // X轴标签字体
        categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

        ValueAxis valueAxis = categoryPlot.getRangeAxis();
        // y轴字体
        valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // y轴标签字体
        valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

    }

    /**
     * 更新图表显示
     *
     * @param chart
     */
    private void updatePlot(JFreeChart chart) {
        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();
        BarRenderer renderer = (BarRenderer) categoryPlot.getRenderer();
        // 阴影效果
        renderer.setShadowVisible(false);
    }

    /**
     * 设置图表
     *
     * @param chart
     */
    public void createPlot() {
        JFreeChart chart = getJFreeChart();
        // 修改字体
        updateFont(chart);
        // 修改图表
        updatePlot(chart);
        // 把JFreeChart面板保存在窗体里
        setContentPane(new ChartPanel(chart));
    }

    public static void main(String[] args) {
        BarDemo42 barDemo = new BarDemo42("柱形图实例");
        barDemo.createPlot();
        barDemo.pack();
        // 把窗体显示到显示器中央
        RefineryUtilities.centerFrameOnScreen(barDemo);
        // 设置可以显示
        barDemo.setVisible(true);

    }

实例222  柱形图阴影偏移
    public BarDemo43(String title) {
        super(title);
    }

    /**
     * 创建一个数据集
     *
     * @return
     */
    private CategoryDataset getCategoryDataset() {

        DefaultKeyedValues keyedValues = new DefaultKeyedValues();
        keyedValues.addValue("1月", 310);
        keyedValues.addValue("2月", 489);
        keyedValues.addValue("3月", 512);
        keyedValues.addValue("4月", 589);
        keyedValues.addValue("5月", 359);
        keyedValues.addValue("6月", 402);
        CategoryDataset dataset = DatasetUtilities.createCategoryDataset(
                "JAVA图书", keyedValues);
        return dataset;
    }

    /**
     * 生成JFreeChart
     *
     * @return
     */
    private JFreeChart getJFreeChart() {
        CategoryDataset dataset = getCategoryDataset();
        JFreeChart chart = ChartFactory.createBarChart("2010年上半年销售量", // 图表标题
                "月份", // x轴标签
                "销售量(单位:本)", // y轴标签
                dataset, // 数据集
                PlotOrientation.VERTICAL, // 图表方向:水平、垂直
                true, // 是否显示图例(对于简单的柱状图必须是false)
                false, // 是否生成工具
                false // 是否生成URL链接
                );
        return chart;
    }

    /**
     * 修改字体
     *
     * @param chart
     */
    private void updateFont(JFreeChart chart) {

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
        LegendTitle legendTitle = chart.getLegend();
        legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();

        CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
        // X轴字体
        categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // X轴标签字体
        categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

        ValueAxis valueAxis = categoryPlot.getRangeAxis();
        // y轴字体
        valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // y轴标签字体
        valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

    }

    /**
     * 更新图表显示
     *
     * @param chart
     */
    private void updatePlot(JFreeChart chart) {
        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();
        BarRenderer renderer = (BarRenderer) categoryPlot.getRenderer();
        // 阴影效果
        renderer.setShadowVisible(true);
        //X轴偏移量
        renderer.setShadowXOffset(10);
        //Y轴偏移量
        renderer.setShadowYOffset(10);
    }

    /**
     * 设置图表
     *
     * @param chart
     */
    public void createPlot() {
        JFreeChart chart = getJFreeChart();
        // 修改字体
        updateFont(chart);
        // 修改图表
        updatePlot(chart);
        // 把JFreeChart面板保存在窗体里
        setContentPane(new ChartPanel(chart));
    }

    public static void main(String[] args) {
        BarDemo43 barDemo = new BarDemo43("柱形图实例");
        barDemo.createPlot();
        barDemo.pack();
        // 把窗体显示到显示器中央
        RefineryUtilities.centerFrameOnScreen(barDemo);
        // 设置可以显示
        barDemo.setVisible(true);

    }

实例223  设置柱形的颜色
    public BarDemo44(String title) {
        super(title);
    }

    /**
     * 创建一个数据集
     *
     * @return
     */
    private CategoryDataset getCategoryDataset() {

        DefaultKeyedValues keyedValues = new DefaultKeyedValues();
        keyedValues.addValue("1月", 310);
        keyedValues.addValue("2月", 489);
        keyedValues.addValue("3月", 512);
        keyedValues.addValue("4月", 589);
        keyedValues.addValue("5月", 359);
        keyedValues.addValue("6月", 402);
        CategoryDataset dataset = DatasetUtilities.createCategoryDataset(
                "JAVA图书", keyedValues);
        return dataset;
    }

    /**
     * 生成JFreeChart
     *
     * @return
     */
    private JFreeChart getJFreeChart() {
        CategoryDataset dataset = getCategoryDataset();
        JFreeChart chart = ChartFactory.createBarChart("2010年上半年销售量", // 图表标题
                "月份", // x轴标签
                "销售量(单位:本)", // y轴标签
                dataset, // 数据集
                PlotOrientation.VERTICAL, // 图表方向:水平、垂直
                true, // 是否显示图例(对于简单的柱状图必须是false)
                false, // 是否生成工具
                false // 是否生成URL链接
                );
        return chart;
    }

    /**
     * 修改字体
     *
     * @param chart
     */
    private void updateFont(JFreeChart chart) {

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
        LegendTitle legendTitle = chart.getLegend();
        legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();

        CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
        // X轴字体
        categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // X轴标签字体
        categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

        ValueAxis valueAxis = categoryPlot.getRangeAxis();
        // y轴字体
        valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // y轴标签字体
        valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

    }

    /**
     * 更新图表显示
     *
     * @param chart
     */
    private void updatePlot(JFreeChart chart) {
        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();
        BarRenderer renderer = (BarRenderer) categoryPlot.getRenderer();
        // 柱图颜色
        renderer.setSeriesPaint(0, Color.orange);
    }

    /**
     * 设置图表
     *
     * @param chart
     */
    public void createPlot() {
        JFreeChart chart = getJFreeChart();
        // 修改字体
        updateFont(chart);
        // 修改图表
        updatePlot(chart);
        // 把JFreeChart面板保存在窗体里
        setContentPane(new ChartPanel(chart));
    }

    public static void main(String[] args) {
        BarDemo44 barDemo = new BarDemo44("柱形图实例");
        barDemo.createPlot();
        barDemo.pack();
        // 把窗体显示到显示器中央
        RefineryUtilities.centerFrameOnScreen(barDemo);
        // 设置可以显示
        barDemo.setVisible(true);

    }


实例224  绘制3D柱形图
    public BarDemo45(String title) {
        super(title);
    }

    /**
     * 创建一个数据集
     *
     * @return
     */
    private CategoryDataset getCategoryDataset() {

        DefaultKeyedValues keyedValues = new DefaultKeyedValues();
        keyedValues.addValue("1月", 310);
        keyedValues.addValue("2月", 489);
        keyedValues.addValue("3月", 512);
        keyedValues.addValue("4月", 589);
        keyedValues.addValue("5月", 359);
        keyedValues.addValue("6月", 402);
        CategoryDataset dataset = DatasetUtilities.createCategoryDataset(
                "JAVA图书", keyedValues);
        return dataset;
    }

    /**
     * 生成JFreeChart
     *
     * @return
     */
    private JFreeChart getJFreeChart() {
        CategoryDataset dataset = getCategoryDataset();
        JFreeChart chart = ChartFactory.createBarChart3D("2010年上半年销售量", // 图表标题
                "月份", // x轴标签
                "销售量(单位:本)", // y轴标签
                dataset, // 数据集
                PlotOrientation.VERTICAL, // 图表方向:水平、垂直
                true, // 是否显示图例(对于简单的柱状图必须是false)
                false, // 是否生成工具
                false // 是否生成URL链接
                );
        return chart;
    }

    /**
     * 修改字体
     *
     * @param chart
     */
    private void updateFont(JFreeChart chart) {

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
        LegendTitle legendTitle = chart.getLegend();
        legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();

        CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
        // X轴字体
        categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // X轴标签字体
        categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

        ValueAxis valueAxis = categoryPlot.getRangeAxis();
        // y轴字体
        valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // y轴标签字体
        valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
    }

    /**
     * 设置图表
     *
     * @param chart
     */
    public void createPlot() {
        JFreeChart chart = getJFreeChart();
        // 修改字体
        updateFont(chart);
        // 把JFreeChart面板保存在窗体里
        setContentPane(new ChartPanel(chart));
    }

    public static void main(String[] args) {
        BarDemo45 barDemo = new BarDemo45("柱形图实例");
        barDemo.createPlot();
        barDemo.pack();
        // 把窗体显示到显示器中央
        RefineryUtilities.centerFrameOnScreen(barDemo);
        // 设置可以显示
        barDemo.setVisible(true);

    }

实例225  标记柱形图区间
    public BarDemo46(String title) {
        super(title);
    }

    /**
     * 创建一个数据集
     *
     * @return
     */
    private CategoryDataset getCategoryDataset() {

        DefaultKeyedValues keyedValues = new DefaultKeyedValues();
        keyedValues.addValue("1月", 310);
        keyedValues.addValue("2月", 489);
        keyedValues.addValue("3月", 512);
        keyedValues.addValue("4月", 589);
        keyedValues.addValue("5月", 359);
        keyedValues.addValue("6月", 402);
        CategoryDataset dataset = DatasetUtilities.createCategoryDataset(
                "JAVA图书", keyedValues);
        return dataset;
    }

    /**
     * 生成JFreeChart
     *
     * @return
     */
    private JFreeChart getJFreeChart() {
        CategoryDataset dataset = getCategoryDataset();
        JFreeChart chart = ChartFactory.createBarChart("2010年上半年销售量", // 图表标题
                "月份", // x轴标签
                "销售量(单位:本)", // y轴标签
                dataset, // 数据集
                PlotOrientation.VERTICAL, // 图表方向:水平、垂直
                true, // 是否显示图例(对于简单的柱状图必须是false)
                false, // 是否生成工具
                false // 是否生成URL链接
                );
        return chart;
    }

    /**
     * 修改字体
     *
     * @param chart
     */
    private void updateFont(JFreeChart chart) {

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
        LegendTitle legendTitle = chart.getLegend();
        legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();

        CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
        // X轴字体
        categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // X轴标签字体
        categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

        ValueAxis valueAxis = categoryPlot.getRangeAxis();
        // y轴字体
        valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // y轴标签字体
        valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
    }

    /**
     * 更新图表显示
     *
     * @param chart
     */
    private void updatePlot(JFreeChart chart) {
        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();
        IntervalMarker target = new IntervalMarker(560.0, 700.0);
        //Marker标签名称
        target.setLabel("超出历史最高销售");
        //Marker标签字体
        target.setLabelFont(new Font("宋体", Font.PLAIN, 14));
        //Marker标签锚点
        target.setLabelAnchor(RectangleAnchor.LEFT);
        //Marker标签文字锚点
        target.setLabelTextAnchor(TextAnchor.BASELINE_LEFT);
        //Marker背景色
        target.setPaint(new Color(222, 122, 255, 128));
        //标记范围
        categoryPlot.addRangeMarker(target);
    }

    /**
     * 设置图表
     *
     * @param chart
     */
    public void createPlot() {
        JFreeChart chart = getJFreeChart();
        // 修改字体
        updateFont(chart);
        // 修改图表
        updatePlot(chart);
        // 把JFreeChart面板保存在窗体里
        setContentPane(new ChartPanel(chart));
    }

    public static void main(String[] args) {
        BarDemo46 barDemo = new BarDemo46("柱形图实例");
        barDemo.createPlot();
        barDemo.pack();
        // 把窗体显示到显示器中央
        RefineryUtilities.centerFrameOnScreen(barDemo);
        // 设置可以显示
        barDemo.setVisible(true);

    }

实例226  多系列柱形图
    public BarDemo47(String title) {
        super(title);
    }

    /**
     * 创建数据集
     *
     * @return
     */
    private CategoryDataset getCategoryDataset() {
        
        // 行关键字
        final String series1 = "JAVA图书";
        final String series2 = "VC图书";
        final String series3 = "VB图书";
        //列关键字
        final String category1 = "1月";
        final String category2 = "2月";
        final String category3 = "3月";
        final String category4 = "4月";
        final String category5 = "5月";
        final String category6 = "6月";

        // 创建分类数据集
        final DefaultCategoryDataset dataset = new DefaultCategoryDataset();

        dataset.addValue(310, series1, category1);
        dataset.addValue(489, series1, category2);
        dataset.addValue(512, series1, category3);
        dataset.addValue(589, series1, category4);
        dataset.addValue(359, series1, category5);
        dataset.addValue(402, series1, category6);

        dataset.addValue(501, series2, category1);
        dataset.addValue(200, series2, category2);
        dataset.addValue(308, series2, category3);
        dataset.addValue(580, series2, category4);
        dataset.addValue(418, series2, category5);
        dataset.addValue(315, series2, category6);

        dataset.addValue(480, series3, category1);
        dataset.addValue(381, series3, category2);
        dataset.addValue(264, series3, category3);
        dataset.addValue(185, series3, category4);
        dataset.addValue(209, series3, category5);
        dataset.addValue(302, series3, category6);
        
        return dataset;
        
    }

    /**
     * 生成JFreeChart
     *
     * @return
     */
    private JFreeChart getJFreeChart() {
        CategoryDataset dataset = getCategoryDataset();
        JFreeChart chart = ChartFactory.createBarChart("2010年上半年销售量", // 图表标题
                "月份", // x轴标签
                "销售量(单位:本)", // y轴标签
                dataset, // 数据集
                PlotOrientation.VERTICAL, // 图表方向:水平、垂直
                true, // 是否显示图例(对于简单的柱状图必须是false)
                false, // 是否生成工具
                false // 是否生成URL链接
                );
        return chart;
    }

    /**
     * 修改字体
     *
     * @param chart
     */
    private void updateFont(JFreeChart chart) {

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
        LegendTitle legendTitle = chart.getLegend();
        legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();

        CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
        // X轴字体
        categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // X轴标签字体
        categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

        ValueAxis valueAxis = categoryPlot.getRangeAxis();
        // y轴字体
        valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // y轴标签字体
        valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
    }

    /**
     * 设置图表
     *
     * @param chart
     */
    public void createPlot() {
        JFreeChart chart = getJFreeChart();
        // 修改字体
        updateFont(chart);
        // 修改图表
        setContentPane(new ChartPanel(chart));
    }

    public static void main(String[] args) {
        BarDemo47 barDemo = new BarDemo47("柱形图实例");
        barDemo.createPlot();
        barDemo.pack();
        // 把窗体显示到显示器中央
        RefineryUtilities.centerFrameOnScreen(barDemo);
        // 设置可以显示
        barDemo.setVisible(true);

    }


实例227  多系列3D柱形图
    public BarDemo48(String title) {
        super(title);
    }

    /**
     * 创建数据集
     *
     * @return
     */
    private CategoryDataset getCategoryDataset() {
        
        // 行关键字
        final String series1 = "JAVA图书";
        final String series2 = "VC图书";
        final String series3 = "VB图书";
        //列关键字
        final String category1 = "1月";
        final String category2 = "2月";
        final String category3 = "3月";
        final String category4 = "4月";
        final String category5 = "5月";
        final String category6 = "6月";

        // 创建分类数据集
        final DefaultCategoryDataset dataset = new DefaultCategoryDataset();

        dataset.addValue(310, series1, category1);
        dataset.addValue(489, series1, category2);
        dataset.addValue(512, series1, category3);
        dataset.addValue(589, series1, category4);
        dataset.addValue(359, series1, category5);
        dataset.addValue(402, series1, category6);

        dataset.addValue(501, series2, category1);
        dataset.addValue(200, series2, category2);
        dataset.addValue(308, series2, category3);
        dataset.addValue(580, series2, category4);
        dataset.addValue(418, series2, category5);
        dataset.addValue(315, series2, category6);

        dataset.addValue(480, series3, category1);
        dataset.addValue(381, series3, category2);
        dataset.addValue(264, series3, category3);
        dataset.addValue(185, series3, category4);
        dataset.addValue(209, series3, category5);
        dataset.addValue(302, series3, category6);
        
        return dataset;
        
    }

    /**
     * 生成JFreeChart
     *
     * @return
     */
    private JFreeChart getJFreeChart() {
        CategoryDataset dataset = getCategoryDataset();
        JFreeChart chart = ChartFactory.createBarChart3D("2010年上半年销售量", // 图表标题
                "月份", // x轴标签
                "销售量(单位:本)", // y轴标签
                dataset, // 数据集
                PlotOrientation.VERTICAL, // 图表方向:水平、垂直
                true, // 是否显示图例(对于简单的柱状图必须是false)
                false, // 是否生成工具
                false // 是否生成URL链接
                );
        return chart;
    }

    /**
     * 修改字体
     *
     * @param chart
     */
    private void updateFont(JFreeChart chart) {

        // 标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
        LegendTitle legendTitle = chart.getLegend();
        legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
        // 图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();

        CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
        // X轴字体
        categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // X轴标签字体
        categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));

        ValueAxis valueAxis = categoryPlot.getRangeAxis();
        // y轴字体
        valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
        // y轴标签字体
        valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
    }
    
    /**
     * 更新图表显示
     *
     * @param chart
     */
    private void updatePlot(JFreeChart chart) {
        //分类图表
        CategoryPlot categoryPlot = chart.getCategoryPlot();
        BarRenderer3D renderer = (BarRenderer3D) categoryPlot.getRenderer();
        //显示边线
        renderer.setDrawBarOutline(true);
    }


    /**
     * 设置图表
     *
     * @param chart
     */
    public void createPlot() {
        JFreeChart chart = getJFreeChart();
        // 修改字体
        updateFont(chart);
        // 修改图表
        updatePlot(chart);
        setContentPane(new ChartPanel(chart));
    }

    public static void main(String[] args) {
        BarDemo48 barDemo = new BarDemo48("柱形图实例");
        barDemo.createPlot();
        barDemo.pack();
        // 把窗体显示到显示器中央
        RefineryUtilities.centerFrameOnScreen(barDemo);
        // 设置可以显示
        barDemo.setVisible(true);
    }

转载于:https://my.oschina.net/MoreYoungGavin/blog/1083420

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值