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;
}
}