package cn.itcast.chart;
import java.awt.Font;
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.CategoryAxis3D;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.axis.NumberAxis3D;
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.BarRenderer3D;
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) {
String title="用户统计报表(所属单位)";//第一个参数:主标题
String categoryAxisLabel="所属单位名称"; //第二个参数:x轴的标签
String valueAxisLabel="数量";//第三个参数:y轴显示的标签
PlotOrientation orientation=PlotOrientation.VERTICAL;//第五个参数:图形的显示形式(水平、垂直)
boolean legend=true;//第六个参数:是否显示子标题
boolean tooltips=true;//第七个参数:是否生成提示的标签
boolean urls=true;//第八个参数:是否生成url链接
//第四个参数图表显示的数据集合
DefaultCategoryDataset dataset=new DefaultCategoryDataset();
dataset.addValue(13, "所属单位", "北京");
dataset.addValue(6, "所属单位", "深圳");
dataset.addValue(2, "所属单位", "上海");
JFreeChart jFreeChart=ChartFactory.createLineChart(title, categoryAxisLabel, valueAxisLabel, dataset, orientation, legend, tooltips, urls);
//===========================================================================================
//处理图形上的乱码
Font font1=new Font("宋体",Font.BOLD,18);
Font font2=new Font("宋体",Font.BOLD,15);
jFreeChart.getTitle().setFont(font1);//处理主标题乱码
jFreeChart.getLegend().setItemFont(font1);;//处理子标题乱码
//获取图表区域对象
CategoryPlot categoryPlot=(CategoryPlot) jFreeChart.getPlot();
//获取X轴对象
CategoryAxis categoryAxis=(CategoryAxis) categoryPlot.getDomainAxis();
//获取Y轴对象
NumberAxis numberAxis=(NumberAxis) categoryPlot.getRangeAxis();
categoryAxis.setTickLabelFont(font2);//处理X轴上的乱码
categoryAxis.setLabelFont(font2);//处理X轴外的乱码
numberAxis.setTickLabelFont(font2);//处理Y轴上的乱码
numberAxis.setLabelFont(font2);//处理Y轴外的乱码
//处理Y轴上显示的刻度,以1作为一格
numberAxis.setAutoTickUnitSelection(false);
//设置递增单位
NumberTickUnit unit=new NumberTickUnit(1);
numberAxis.setTickUnit(unit);
//=====================================================================================================
//获取绘图区域对象
LineAndShapeRenderer lineAndShapeRenderer=(LineAndShapeRenderer) categoryPlot.getRenderer();
//在图形上显示数字
StandardCategoryItemLabelGenerator generator=new StandardCategoryItemLabelGenerator();
lineAndShapeRenderer.setBaseItemLabelGenerator(generator);
lineAndShapeRenderer.setBaseItemLabelsVisible(true);
lineAndShapeRenderer.setBaseItemLabelFont(font2);
/*
* 在图形上添加转折点(使用小矩形显示)
* 第一个参数:第几条线
* 第二个参数:形状
*/
lineAndShapeRenderer.setSeriesShape(0, new java.awt.Rectangle(10,10));
lineAndShapeRenderer.setSeriesShapesVisible(0, true);
//======================================================================================================
//使用ChartFrame对象显示图像
ChartFrame frame=new ChartFrame("xyz",jFreeChart);
frame.setVisible(true);
frame.pack();
}
}