jfreechart形成各种图Word格式文档下载.docx
《jfreechart形成各种图Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《jfreechart形成各种图Word格式文档下载.docx(24页珍藏版)》请在冰豆网上搜索。
org.jfree.data.category.CategoryDataset;
org.jfree.data.general.DatasetUtilities;
org.jfree.data.general.DefaultPieDataset;
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/"
;
void
main(String[]args){
//TODOAuto-generatedmethodstub
CreateChartServiceImplpm=new
CreateChartServiceImpl();
//生成饼状图
//pm.makePieChart();
//生成单组柱状图
//pm.makeBarChart();
//生成多组柱状图
//pm.makeBarGroupChart();
//生成堆积柱状图
//pm.makeStackedBarChart();
//生成折线图
pm.makeLineAndShapeChart();
}
*生成折线图
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"
);
*生成分组的柱状图
makeBarGroupChart(){
double[][]{{672,766,223,540,126
},{332,256,523,240,526
createBarChart(dataset,"
x坐标"
y坐标"
柱状图"
barGroup.png"
*生成柱状图
makeBarChart(){
bar.png"
*生成堆栈柱状图
makeStackedBarChart(){
double[][]{{0.21,0.66,0.23,0.40,0.26
{0.25,0.21,0.10,0.40,0.16
createStackedBarChart(dataset,"
stsckedBar.png"
*生成饼状图
makePieChart(){
double[]data={9,91
String[]keys={"
失败率"
成功率"
createValidityComparePimChar(getDataPieSetByUtil(data,keys),"
饼状图"
"
pie2.png"
keys);
//柱状图,折线图数据集
CategoryDatasetgetBarData(double[][]data,String[]rowKeys,
String[]columnKeys){
return
DatasetUtilities
.createCategoryDataset(rowKeys,columnKeys,data);
//饼状图数据集
PieDatasetgetDataPieSetByUtil(double[]data,
String[]datadescription){
if
(data!
=null
&
datadescription!
=null){
(data.length==datadescription.length){
DefaultPieDatasetdataset=new
DefaultPieDataset();
for
(int
i=0;
i<
data.length;
i++){
dataset.setValue(datadescription[i],data[i]);
dataset;
null;
*柱状图
*@paramdataset
*
数据集
*@paramxName
x轴的说明(如种类,时间等)
*@paramyName
y轴的说明(如速度,时间等)
*@paramchartTitle
图标题
*@paramcharName
生成图片的名字
*@return
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);
chartName;
}catch
(Exceptione){
e.printStackTrace();
}finally
fos_jpg.close();
*横向图
*@paramdataset
StringcreateHorizontalBarChart(CategoryDatasetdataset,
StringxName,StringyName,StringchartTitle,StringcharName){
PlotOrientation.VERTICAL,//图表