JFreeChart生成折线图

package cn.it.demo;

import java.awt.Font;
import java.awt.Rectangle;

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

/**
 * 折线图
 */
public class LineDemo {

 public static void main(String[] args) {
  CategoryDataset dataset=getDataSet();
  
  JFreeChart chart=ChartFactory.createLineChart("cd类别和数量对照表",
                             "cd类别",
                             "数量",
                              dataset,
                              PlotOrientation.VERTICAL,
                              true,
                              false,
                              false);
  
  //获取图表对象
  CategoryPlot categoryPlot=(CategoryPlot)chart.getPlot();
  
  //获取x轴
  CategoryAxis categoryAxis=(CategoryAxis)categoryPlot.getDomainAxis();
  
  //获取y轴
  NumberAxis numberAxis=(NumberAxis)categoryPlot.getRangeAxis();
  
  //绘图区域(红色矩形框的部分)
  LineAndShapeRenderer lineAndShapeRenderer=(LineAndShapeRenderer)categoryPlot.getRenderer();
 
/**************************************************************************************************/     
  //处理主标题乱码
        chart.getTitle().setFont(new Font("黑体",Font.PLAIN,18));
  
  //处理子标题乱码
        chart.getLegend().setItemFont(new Font("黑体",Font.PLAIN,18));
  
     //处理x轴的乱码
         categoryAxis.setLabelFont(new Font("黑体",Font.PLAIN,18));
  
  //处理x轴上的乱码
         categoryAxis.setTickLabelFont(new Font("黑体",Font.PLAIN,18));
        
  //处理y轴乱码
         numberAxis.setLabelFont(new Font("黑体",Font.PLAIN,18));
   
  //处理y轴上的乱码
         numberAxis.setTickLabelFont(new Font("黑体",Font.PLAIN,18));
/**************************************************************************************************/
//处理y轴的刻度
         numberAxis.setAutoTickUnitSelection(false);
         numberAxis.setTickUnit(new NumberTickUnit(1));
/**************************************************************************************************/
         //生成折线图上的数字
         lineAndShapeRenderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
         //设置图表上的数字可见
         lineAndShapeRenderer.setBaseItemLabelsVisible(true);
         //设置图表上的数字字体
         lineAndShapeRenderer.setBaseItemLabelFont(new Font("黑体",Font.PLAIN,18));
/**************************************************************************************************/ 
 //设置折线图拐角上的正方形
         //创建一个正方形
         Rectangle  shape=new Rectangle(8,8);
         lineAndShapeRenderer.setSeriesShape(0, shape);
         //设置拐角上图形可见
         lineAndShapeRenderer.setSeriesShapesVisible(0, true);
        
/**************************************************************************************************/        
  ChartFrame chartFrame=new ChartFrame("cd类别和数量的提示",chart);
  chartFrame.setVisible(true);
  chartFrame.pack();  
/************************************************************************************************/ 
 }
 
 private static CategoryDataset getDataSet() {
  DefaultCategoryDataset dataset=new DefaultCategoryDataset();
    
  /*
   *     摇滚乐      8
      外国歌曲    1
      民乐        6
      流行音乐    6
   *
   */ 
     dataset.addValue(8, "类别", "摇滚乐");
  dataset.addValue(1, "类别", "外国歌曲");
  dataset.addValue(6, "类别", " 民乐");
  dataset.addValue(6, "类别", "流行音乐");
 
  return dataset;
 }
}

你可能感兴趣的:(JFreeChart生成折线图)