用jfreechart制作折线图饼图柱图.docx
- 文档编号:6193625
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:7
- 大小:17.24KB
用jfreechart制作折线图饼图柱图.docx
《用jfreechart制作折线图饼图柱图.docx》由会员分享,可在线阅读,更多相关《用jfreechart制作折线图饼图柱图.docx(7页珍藏版)》请在冰豆网上搜索。
用jfreechart制作折线图饼图柱图
JFreeChart目前是最好的java图形解决方案,基本能够解决目前的图形方面的需求,主要包括如下几个方面:
piecharts(2Dand3D:
饼图(平面和立体
barcharts(regularandstacked,withanoptional3Deffect:
柱状图lineandareacharts:
曲线图
scatterplotsandbubblecharts
timeseries,high/low/open/closechartsandcandlestickcharts:
时序图
combinationcharts:
复合图
Paretocharts
Ganttcharts:
甘特图
windplots,meterchartsandsymbolcharts
wafermapcharts
(态图表,饼图(二维和三维,柱状图(水平,垂直,线图,点图,时间变化图,甘特图,股票行情图,混和图,温度计图,刻度图等常用商用图表
图形可以导出成PNG和JPEG格式,同时还可以与PDF和EXCEL关联
JFreeChart核心类库介绍:
发现源码的主要由两个大的包组成:
org.jfree.chart,org.jfree.data。
其中前者主要与图形
本身有关,后者与图形显示的数据有关。
具体研究如果大家有兴趣的话可以自己研究,以后有时间我会告诉大家怎么去
研究源码。
核心类主要有:
org.jfree.chart.JFreeChart:
图表对象,任何类型的图表的最终表现形式都是在该对象进行一些属性的定制。
JFreeChart引擎本身提供了一个工厂类用于创建不同类型的图表对象
org.jfree.data.category.XXXDataSet:
数据集对象,用于提供显示图表所用的数据。
根据不同类型的图表对应着很多类型的数据集对象类
org.jfree.chart.plot.XXXPlot:
图表区域对象,基本上这个对象决定着什么样式的图表,创建该对象的时候需要Axis、Renderer以及数据集对象的支持org.jfree.chart.axis.XXXAxis:
用于处理图表的两个轴:
纵轴和横轴
org.jfree.chart.render.XXXRender:
负责如何显示一个图表对象
org.jfree.chart.urls.XXXURLGenerator:
用于生成Web图表中每个项目的鼠标点击链接
XXXXXToolTipGenerator:
用于生成图象的帮助提示,不同类型图表对应不同类型的工具提示类
1:
饼图:
packagetest;
importjava.awt.Font;
importjavax.swing.JPanel;
importorg.jfree.chart.ChartFactory;
importorg.jfree.chart.ChartPanel;
importorg.jfree.chart.JFreeChart;
importorg.jfree.chart.plot.PiePlot;
importorg.jfree.data.general.DefaultPieDataset;
importorg.jfree.data.general.PieDataset;
importorg.jfree.ui.ApplicationFrame;
importorg.jfree.ui.RefineryUtilities;
publicclassPieChartsextendsApplicationFrame{
publicPieCharts(Strings{
super(s;
setContentPane(createDemoPanel(;
}
//生成显示图表的面板
publicstaticJPanelcreateDemoPanel({
JFreeChartjfreechart=createChart(createDataset(;
returnnewChartPanel(jfreechart;
}
//生成饼图数据集对象
publicstaticPieDatasetcreateDataset({
DefaultPieDatasetdefaultpiedataset=newDefaultPieDataset(;defaultpiedataset.setValue("管理人员",10.02D;
defaultpiedataset.setValue("市场人员",20.23D;
defaultpiedataset.setValue("开发人员",60.02D;
defaultpiedataset.setValue("OEM人员",10.02D;
defaultpiedataset.setValue("其他人员",5.11D;
returndefaultpiedataset;
}
//生成图表主对象JFreeChart
publicstaticJFreeChartcreateChart(PieDatasetpiedataset{
//定义图表对象
JFreeChartjfreechart=ChartFactory.createPieChart("CityInfoPort公司组织架构图",piedataset,true,true,false;
//获得图表显示对象
PiePlotpieplot=(PiePlotjfreechart.getPlot(;
//设置图表标签字体
pieplot.setLabelFont(newFont("SansSerif",Font.BOLD,12;
pieplot.setNoDataMessage("Nodataavailable";
pieplot.setCircular(true;
pieplot.setLabelGap(0.01D;//间距
returnjfreechart;
}
publicstaticvoidmain(String[]args{
PieChartsfjc=newPieCharts("CityInfoPort公司组织架构图";fjc.pack(;
RefineryUtilities.centerFrameOnScreen(fjc;
fjc.setVisible(true;
}
}
2:
折线图
packagetest;
importjavax.swing.JPanel;
importorg.jfree.chart.ChartFactory;
importorg.jfree.chart.ChartPanel;
importorg.jfree.chart.JFreeChart;
importorg.jfree.chart.axis.NumberAxis;
importorg.jfree.chart.plot.CategoryPlot;
importorg.jfree.chart.plot.PlotOrientation;
importorg.jfree.data.category.DefaultCategoryDataset;
importorg.jfree.ui.ApplicationFrame;
importorg.jfree.ui.RefineryUtilities;
publicclassLineChartsextendsApplicationFrame{
publicLineCharts(Strings{
super(s;
setContentPane(createDemoLine(;
}
publicstaticvoidmain(String[]args{
LineChartsfjc=newLineCharts("折线图";
fjc.pack(;
RefineryUtilities.centerFrameOnScreen(fjc;
fjc.setVisible(true;
}
//生成显示图表的面板
publicstaticJPanelcreateDemoLine({
JFreeChartjfreechart=createChart(createDataset(;
returnnewChartPanel(jfreechart;
}
//生成图表主对象JFreeChart
publicstaticJFreeChartcreateChart(DefaultCategoryDatasetlinedataset{
//定义图表对象
JFreeChartchart=ChartFactory.createLineChart("折线图",//charttitle"时间",//domainaxislabel
"销售额(百万",//rangeaxislabel
linedataset,//data
PlotOrientation.VERTICAL,//orientation
true,//includelegend
true,//tooltips
false//urls
;
CategoryPlotplot=chart.getCategoryPlot(;
//customisetherangeaxis...
NumberAxisrangeAxis=(NumberAxisplot.getRangeAxis(;
rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits(;rangeAxis.setAutoRangeIncludesZero(true;
rangeAxis.setUpperMargin(0.20;
rangeAxis.setLabelAngle(Math.PI/2.0;
returnchart;
}
//生成数据
publicstaticDefaultCategoryDatasetcreateDataset({DefaultCategoryDatasetlinedataset=newDefaultCategoryDataset(;
//各曲线名称
Stringseries1="冰箱";
Stringseries2="彩电";
Stringseries3="洗衣机";
//横轴名称(列名称
Stringtype1="1月";
Stringtype2="2月";
Stringtype3="3月";
linedataset.addValue(0.0,series1,type1;
linedataset.addValue(4.2,series1,type2;
linedataset.addValue(3.9,series1,type3;
linedataset.addValue(1.0,series2,type1;
linedataset.addValue(5.2,series2,type2;
linedataset.addValue(7.9,series2,type3;
linedataset.addValue(2.0,series3,type1;
linedataset.addValue(9.2,series3,type2;
linedataset.addValue(8.9,series3,type3;
returnlinedataset;
}
}
3:
柱状图:
packagetest;
importjava.awt.Color;
importjavax.swing.JPanel;
importorg.jfree.chart.ChartFactory;
importorg.jfree.chart.ChartPanel;
importorg.jfree.chart.JFreeChart;
importorg.jfree.chart.labels.StandardCategoryItemLabelGenerator;importorg.jfree.chart.plot.CategoryPlot;
importorg.jfree.chart.plot.PlotOrientation;
importorg.jfree.chart.renderer.category.BarRenderer3D;
importorg.jfree.data.category.CategoryDataset;
importorg.jfree.data.general.DatasetUtilities;
importorg.jfree.ui.ApplicationFrame;
importorg.jfree.ui.RefineryUtilities;
publicclassBarChartsextendsApplicationFrame{
publicBarCharts(Strings{
super(s;
setContentPane(createDemoBar(;
}
//生成显示图表的面板publicstaticJPanelcreateDemoBar({JFreeChartjfreechart=createChart(createDataset(;returnnewChartPanel(jfreechart;}//生成图表主对象JFreeChartpublicstaticJFreeChartcreateChart(CategoryDatasetdataset{JFreeChartchart=ChartFactory.createBarChart3D("水果销量统计图",//建立3D柱状图"水果",//横轴名称"销量",//纵轴名称dataset,//数据集PlotOrientation.VERTICAL,//纵向显示true,//显示每个颜色柱子的柱名false,false;CategoryPlotplot=chart.getCategoryPlot(;//设置图的高级属性BarRenderer3Drenderer=newBarRenderer3D(;//3D属性修改renderer.setBaseOutlinePaint(Color.BLACK;//设置边框颜色为blackrenderer.setWallPaint(Color.gray;//设置wall的颜色为grayrenderer.setItemLabelGenerator(newStandardCategoryItemLabelGenerator(;//设置柱顶数据,API中居然没有StandardCategoryItemLabelGenerator这个类//renderer.setItemLabelFont(newFont("黑体",Font.PLAIN,12;//设置柱顶数据字体renderer.setItemLabelsVisible(true;//打开ItemLabel开关plot.setRenderer(renderer;//将修改后的属性值保存到图中plot.setForegroundAlpha(0.6f;//柱的透明度returnchart;}//生成数据publicstaticCategoryDatasetcreateDataset({double[][]data=newdouble[][]{{672,766,223,540,126},{325,521,210,340,106},{332,256,523,240,526}};//设置数据String[]rowKeys={"苹果","梨子","葡萄"};//行标志String[]columnKeys={"北京","上海","广州","成都","深圳"};//列标志CategoryDatasetlinedataset=DatasetUtilities.createCategoryDataset(rowKeys,columnKeys,data;//建立数据集returnlinedataset;}
publicstaticvoidmain(String[]args{BarChartsfjc=newBarCharts("柱状图";fjc.pack(;RefineryUtilities.centerFrameOnScreen(fjc;fjc.setVisible(true;}}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- jfreechart 制作 折线 图饼图柱图