jfreechart形成各种图.docx
- 文档编号:3635306
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:24
- 大小:21.88KB
jfreechart形成各种图.docx
《jfreechart形成各种图.docx》由会员分享,可在线阅读,更多相关《jfreechart形成各种图.docx(24页珍藏版)》请在冰豆网上搜索。
jfreechart形成各种图
package com.dc.bd.system.util;
import java.awt.Color;
import java.awt.Font;
import java.io.File;
import java.io.FileOutputStream;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.CategoryLabelPositions;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
import org.jfree.chart.labels.StandardPieSectionLabelGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PiePlot3D;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.chart.renderer.category.LineAndShapeRenderer;
import org.jfree.chart.renderer.category.StackedBarRenderer;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.general.DatasetUtilities;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.general.PieDataset;
//jar
//jfreechart-1.0.10.jar (能解决新版本的乱码问题)
//jcommon-1.0.13.jar
/***/
/**
*实际取色的时候一定要16位的,这样比较准确
*
*@authornew
*/
public class CreateChartServiceImpl{
private static final StringCHART_PATH="E:
/test/";
public static void main(String[]args){
//TODOAuto-generatedmethodstub
CreateChartServiceImplpm=new CreateChartServiceImpl();
//生成饼状图
//pm.makePieChart();
//生成单组柱状图
//pm.makeBarChart();
//生成多组柱状图
//pm.makeBarGroupChart();
//生成堆积柱状图
//pm.makeStackedBarChart();
//生成折线图
pm.makeLineAndShapeChart();
}
/***/
/**
*生成折线图
*/
public void makeLineAndShapeChart(){
double[][]data=new double[][]{
{672,766,223,540,126 },
{325,521,210,340,106 },
{332,256,523,240,526 }};
String[]rowKeys={"苹果","梨子","葡萄" };
String[]columnKeys={"北京","上海","广州","成都","深圳" };
CategoryDatasetdataset=getBarData(data,rowKeys,columnKeys);
createTimeXYChar("折线图","x轴","y轴",dataset,"lineAndShap.png");
}
/***/
/**
*生成分组的柱状图
*/
public void makeBarGroupChart(){
double[][]data=new double[][]{{672,766,223,540,126 },
{325,521,210,340,106 },{332,256,523,240,526 }};
String[]rowKeys={"苹果","梨子","葡萄" };
String[]columnKeys={"北京","上海","广州","成都","深圳" };
CategoryDatasetdataset=getBarData(data,rowKeys,columnKeys);
createBarChart(dataset,"x坐标","y坐标","柱状图","barGroup.png");
}
/***/
/**
*生成柱状图
*/
public void makeBarChart(){
double[][]data=new double[][]{{672,766,223,540,126 }};
String[]rowKeys={"苹果" };
String[]columnKeys={"北京","上海","广州","成都","深圳" };
CategoryDatasetdataset=getBarData(data,rowKeys,columnKeys);
createBarChart(dataset,"x坐标","y坐标","柱状图","bar.png");
}
/***/
/**
*生成堆栈柱状图
*/
public void makeStackedBarChart(){
double[][]data=new double[][]{{0.21,0.66,0.23,0.40,0.26 },
{0.25,0.21,0.10,0.40,0.16 }};
String[]rowKeys={"苹果","梨子" };
String[]columnKeys={"北京","上海","广州","成都","深圳" };
CategoryDatasetdataset=getBarData(data,rowKeys,columnKeys);
createStackedBarChart(dataset,"x坐标","y坐标","柱状图","stsckedBar.png");
}
/***/
/**
*生成饼状图
*/
public void makePieChart(){
double[]data={9,91 };
String[]keys={"失败率","成功率" };
createValidityComparePimChar(getDataPieSetByUtil(data,keys),"饼状图",
"pie2.png",keys);
}
//柱状图,折线图数据集
public CategoryDatasetgetBarData(double[][]data,String[]rowKeys,
String[]columnKeys){
return DatasetUtilities
.createCategoryDataset(rowKeys,columnKeys,data);
}
//饼状图数据集
public PieDatasetgetDataPieSetByUtil(double[]data,
String[]datadescription){
if (data!
=null &&datadescription!
=null){
if (data.length==datadescription.length){
DefaultPieDatasetdataset=new DefaultPieDataset();
for (int i=0;i dataset.setValue(datadescription[i],data[i]); } return dataset; } } return null; } /***/ /** *柱状图 * *@paramdataset * 数据集 *@paramxName * x轴的说明(如种类,时间等) *@paramyName * y轴的说明(如速度,时间等) *@paramchartTitle * 图标题 *@paramcharName * 生成图片的名字 *@return */ public StringcreateBarChart(CategoryDatasetdataset,StringxName, StringyName,StringchartTitle,StringcharName){ JFreeChartchart=ChartFactory.createBarChart(chartTitle,//图表标题 xName,//目录轴的显示标签 yName,//数值轴的显示标签 dataset,//数据集 PlotOrientation.VERTICAL,//图表方向: 水平、垂直 true,//是否显示图例(对于简单的柱状图必须是false) false,//是否生成工具 false //是否生成URL链接 ); FontlabelFont=new Font("SansSerif",Font.TRUETYPE_FONT,12); /**//* *VALUE_TEXT_ANTIALIAS_OFF表示将文字的抗锯齿关闭, *使用的关闭抗锯齿后,字体尽量选择12到14号的宋体字,这样文字最清晰好看 */ //chart.getRenderingHints().put(RenderingHints.KEY_TEXT_ANTIALIASING,RenderingHints.VALUE_TEXT_ANTIALIAS_OFF); chart.setTextAntiAlias(false); chart.setBackgroundPaint(Color.white); //createplot CategoryPlotplot=chart.getCategoryPlot(); //设置横虚线可见 plot.setRangeGridlinesVisible(true); //虚线色彩 plot.setRangeGridlinePaint(Color.gray); //数据轴精度 NumberAxisvn=(NumberAxis)plot.getRangeAxis(); //vn.setAutoRangeIncludesZero(true); DecimalFormatdf=new DecimalFormat("#0.00"); vn.setNumberFormatOverride(df);//数据轴数据标签的显示格式 //x轴设置 CategoryAxisdomainAxis=plot.getDomainAxis(); domainAxis.setLabelFont(labelFont);//轴标题 domainAxis.setTickLabelFont(labelFont);//轴数值 //Lable(Math.PI/3.0)度倾斜 //domainAxis.setCategoryLabelPositions(CategoryLabelPositions //.createUpRotationLabelPositions(Math.PI/3.0)); domainAxis.setMaximumCategoryLabelWidthRatio(0.6f);//横轴上的Lable是否完整显示 //设置距离图片左端距离 domainAxis.setLowerMargin(0.1); //设置距离图片右端距离 domainAxis.setUpperMargin(0.1); //设置columnKey是否间隔显示 //domainAxis.setSkipCategoryLabelsToFit(true); plot.setDomainAxis(domainAxis); //设置柱图背景色(注意,系统取色的时候要使用16位的模式来查看颜色编码,这样比较准确) plot.setBackgroundPaint(new Color(255,255,204)); //y轴设置 ValueAxisrangeAxis=plot.getRangeAxis(); rangeAxis.setLabelFont(labelFont); rangeAxis.setTickLabelFont(labelFont); //设置最高的一个Item与图片顶端的距离 rangeAxis.setUpperMargin(0.15); //设置最低的一个Item与图片底端的距离 rangeAxis.setLowerMargin(0.15); plot.setRangeAxis(rangeAxis); BarRendererrenderer=new BarRenderer(); //设置柱子宽度 renderer.setMaximumBarWidth(0.05); //设置柱子高度 renderer.setMinimumBarLength(0.2); //设置柱子边框颜色 renderer.setBaseOutlinePaint(Color.BLACK); //设置柱子边框可见 renderer.setDrawBarOutline(true); ////设置柱的颜色 renderer.setSeriesPaint(0,new Color(204,255,255)); renderer.setSeriesPaint(1,new Color(153,204,255)); renderer.setSeriesPaint(2,new Color(51,204,204)); //设置每个地区所包含的平行柱的之间距离 renderer.setItemMargin(0.0); //显示每个柱的数值,并修改该数值的字体属性 renderer.setIncludeBaseInRange(true); renderer .setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator()); renderer.setBaseItemLabelsVisible(true); plot.setRenderer(renderer); //设置柱的透明度 plot.setForegroundAlpha(1.0f); FileOutputStreamfos_jpg=null; try { isChartPathExist(CHART_PATH); StringchartName=CHART_PATH+charName; fos_jpg=new FileOutputStream(chartName); ChartUtilities.writeChartAsPNG(fos_jpg,chart,500,500,true,10); return chartName; }catch (Exceptione){ e.printStackTrace(); return null; }finally { try { fos_jpg.close(); }catch (Exceptione){ e.printStackTrace(); } } } /***/ /** *横向图 * *@paramdataset * 数据集 *@paramxName * x轴的说明(如种类,时间等) *@paramyName * y轴的说明(如速度,时间等) *@paramchartTitle * 图标题 *@paramcharName * 生成图片的名字 *@return */ public StringcreateHorizontalBarChart(CategoryDatasetdataset, StringxName,StringyName,StringchartTitle,StringcharName){ JFreeChartchart=ChartFactory.createBarChart(chartTitle,//图表标题 xName,//目录轴的显示标签 yName,//数值轴的显示标签 dataset,//数据集 PlotOrientation.VERTICAL,//图表
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- jfreechart 形成 各种