📄 firstjfreechart.java
字号:
package com.jfreechar;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.ChartFactory;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.general.Dataset;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PiePlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.data.general.PieDataset;
import org.jfree.data.time.Day;
import org.jfree.data.time.Minute;
import org.jfree.data.time.Month;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
import org.jfree.data.xy.XYDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RectangleInsets;
import org.jfree.ui.RefineryUtilities;
import java.awt.Color;
import java.awt.Font;
import java.awt.GradientPaint;
import java.util.Calendar;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Map;
import javax.swing.*;
public class FirstJFreeChart extends ApplicationFrame {
/**
*
*/
private static final long serialVersionUID = -3594083889286213233L;
//构造函数
public FirstJFreeChart(String s,Map map,int i){
super(s);
setContentPane(createDemoPanel(map,i));
}
public static void main(String[] args){
Map map=new Hashtable();
map.put("管理人员","18.02D");
map.put("市场人员","20.23D");
map.put("开发人员","60.02D");
map.put("OEM人员","10.02D");
map.put("其他人员","5.11D");
for(int i=1;i<4;i++){
FirstJFreeChart fjc = new FirstJFreeChart("CityInfoPort公司组织架构图",map,i);
fjc.pack();
RefineryUtilities.centerFrameOnScreen(fjc);
fjc.setVisible(true);
}
}
//生成饼图数据集对象
public static PieDataset createDataset(Map map){
DefaultPieDataset defaultpiedataset = new DefaultPieDataset();
Iterator it=map.keySet().iterator();
for(;it.hasNext();){
String key = (String) it.next();
Object value = map.get(key);
System.out.println(key+"-->"+value);
defaultpiedataset.setValue(key,Double.parseDouble(value.toString())) ;
}
return defaultpiedataset;
}
//生成图表主对象JFreeChart
public static JFreeChart createChart(Dataset dataset,int i){
//定义图表对象
JFreeChart jfreechart =null;
if(i==1){
jfreechart= ChartFactory.createPieChart("CityInfoPort公司组织架构图",(PieDataset)dataset,true,true,true);
//获得图表显示对象
PiePlot pieplot = (PiePlot)jfreechart.getPlot();//CategoryPlot
//设置图表标签字体
pieplot.setLabelFont(new Font("SansSerif",Font.BOLD,12));
pieplot.setNoDataMessage("No data available");
pieplot.setCircular(true);
pieplot.setLabelGap(0.01D);//间距
} else if(i==2){
jfreechart=ChartFactory.createBarChart3D("柱状图",
"Category", "Value", (CategoryDataset)dataset, PlotOrientation.VERTICAL, true,
true, false);
jfreechart.setBackgroundPaint(new Color(0xbbbbdd));//设置背景色
CategoryPlot categoryplot = jfreechart.getCategoryPlot();//得到图形以便精细设置
NumberAxis numberaxis = (NumberAxis)categoryplot.getRangeAxis();//取得该类图形的范围数字轴,指纵坐标
numberaxis.setTickLabelFont(new Font("黑体",Font.ITALIC,18));//设置纵坐标的字体,风格,大小
numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());//设置纵坐标以标准整形为单位
BarRenderer barrenderer = (BarRenderer)categoryplot.getRenderer();//barrenderer表示得到所有的柱形集合对象
barrenderer.setDrawBarOutline(false);//不显示柱形的外边框
barrenderer.setMaximumBarWidth(2D);//设置每个图形的最大宽度
// GradientPaint gradientpaint = new GradientPaint(0.0F, 0.0F, Color.red, 0.0F, 0.0F, Color.black);//从上到下渐变的颜色
// GradientPaint gradientpaint1 = new GradientPaint(0.0F, 0.0F, Color.green, 0.0F, 0.0F, Color.red);//从上到下渐变的颜色
// barrenderer.setSeriesPaint(0, gradientpaint);//第一个柱形
// barrenderer.setSeriesPaint(1, gradientpaint1);//第二个柱形
} else if(i==3){
jfreechart=ChartFactory.createTimeSeriesChart(
"时序图", "Date", "Rate", (XYDataset)dataset, true, true, false);
XYPlot plot = (XYPlot) jfreechart.getPlot();
XYLineAndShapeRenderer xylineandshaperenderer = (XYLineAndShapeRenderer)plot.getRenderer();
plot.setBackgroundPaint(Color.white);//设置网格背景颜色
plot.setDomainGridlinePaint(Color.pink);//设置网格竖线颜色
plot.setRangeGridlinePaint(Color.pink);//设置网格横线颜色
plot.setAxisOffset(new RectangleInsets(10D, 10D, 10D, 10D));//设置曲线图与xy轴的距离,即曲线与xy轴贴近的距离
xylineandshaperenderer.setBaseShapesVisible(true);//设置曲线是否显示数据点
}System.out.println("===>"+i);
return jfreechart;
}
public static CategoryDataset createCategoryDataset(Map map){
DefaultCategoryDataset defaultcategorydataset=new DefaultCategoryDataset();
Iterator it=map.keySet().iterator();
int i=3;
for(;it.hasNext();){
i=i+3;
String key = (String) it.next();
Object value = map.get(key);
System.out.println(key+"-->"+value);
defaultcategorydataset.setValue(i, key.toString(), value.toString());
}
return defaultcategorydataset;
}
public static XYDataset createXYDataset(Map map){
Iterator it=map.keySet().iterator();
Calendar calender = Calendar.getInstance();
int year = calender.get(Calendar.YEAR);
Day current = new Day(1, Month.JANUARY, year);
XYDataset data = new TimeSeriesCollection();
for(;it.hasNext();){
String key=(String)it.next();
Object value=map.get(key);
System.out.println(key+"-->"+value);
TimeSeries series=new TimeSeries(key);
series.add(current,Double.parseDouble(value.toString()));
((TimeSeriesCollection)data).addSeries(series);
current = (Day) current.next();
}
((TimeSeriesCollection)data).setDomainIsPointsInTime(true);
/* TimeSeries series = new TimeSeries("Random Data");
//Day current = new Day(1, Month.JANUARY, 2001);
for (int i = 0; i < 100; i++) {
series.add(current, Math.random() * 100);
current = (Day) current.next();
}
*/
return data;
}
//生成显示图表的面板
public static JPanel createDemoPanel(Map map,int i){
JFreeChart jfreechart=null;
if(i==1){
jfreechart= createChart(createDataset(map),i);
} else if(i==2){
jfreechart=createChart(createCategoryDataset(map),i);
} else if(i==3){
jfreechart=createChart(createXYDataset(map),i);
}
return new ChartPanel(jfreechart);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -