package com.javaeye.e3002;
import java.awt.Color;
import java.awt.GradientPaint;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
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.plot.CategoryPlot;
import org.jfree.chart.plot.DatasetRenderingOrder;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.LineAndShapeRenderer;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.ui.ApplicationFrame;
/**
* 日期 2007-4-20
* @author xuquanxing
*/
public class mixChart extends ApplicationFrame
{
public mixChart(String arg0)
{
super(arg0);
/* ChartPanel chartpanel = new ChartPanel(createChart());
chartpanel.setPreferredSize(new Dimension(500, 270));
setContentPane(chartpanel);*/
}
/**
*
*/
private static final long serialVersionUID = 1L;
/**
* 日期 2007-4-18
* @author xuquanxing
* @param args void
*/
public static void main(String[] args)
{
JFreeChart freechat =createChart();
FileOutputStream fos_jpg = null;
try
{
try
{
fos_jpg = new FileOutputStream("D:\\bar.jpg");
ChartUtilities.writeChartAsJPEG(fos_jpg, 1, freechat, 400, 400, null);
} catch (FileNotFoundException e)
{
e.printStackTrace();
} catch (IOException e)
{
e.printStackTrace();
}
} finally
{
try
{
fos_jpg.close();
} catch (Exception e)
{
}
}
}
public static JFreeChart createChart()
{
//创建数据集
CategoryDataset categorydataset = createDataset1();
//创建数据集1
CategoryDataset categorydataset1 = createDataset2();
JFreeChart jfreechart = ChartFactory.createBarChart3D(
"kpi",
"index",
"concrete",
categorydataset1,
PlotOrientation.VERTICAL,
true,
true,
false
);
//设置图片背景色
GradientPaint bgGP = new GradientPaint(0, 1000, Color.cyan, 0, 0,
Color.WHITE, false);
jfreechart.setBackgroundPaint(bgGP);
CategoryPlot categoryplot3 = (CategoryPlot) jfreechart.getPlot();
// NumberAxis numberaxisbar = (NumberAxis) categoryplot3.getRangeAxis();
// 设置最高的一个 Item 与图片顶端的距离
// numberaxisbar.setUpperBound(0.15);
// numberaxisbar.setLowerMargin(1000.00);
// categoryplot3.setRangeAxis(numberaxisbar);
//System.out.println("categoryplot3.getRangeAxis()"+categoryplot3.getRangeAxis(0).getRange().getLength());
CategoryAxis categoryaxis = categoryplot3.getDomainAxis();
// CategoryLabelPositions.DOWN_45 表示label样式 倾斜角度
categoryaxis.setCategoryLabelPositions(CategoryLabelPositions.DOWN_45);
//设置标签宽度
categoryaxis.setMaximumCategoryLabelWidthRatio(20F);
NumberAxis numberaxis3 = new NumberAxis("value");
categoryplot3.setRangeAxis(1, numberaxis3);
categoryplot3.setDataset(1, categorydataset);//设置数据集索引
categoryplot3.mapDatasetToRangeAxis(1,1);//将该索引映射到axis 第一个参数指数据集的索引,第二个参数为坐标轴的索引
LineAndShapeRenderer lineandshaperenderer = new LineAndShapeRenderer();
lineandshaperenderer.setShapesVisible(true);
//设置某坐标轴索引上数据集的显示样式
categoryplot3.setRenderer(1, lineandshaperenderer);
//设置两个图的前后顺序 ,DatasetRenderingOrder.FORWARD表示后面的图在前者上面 ,DatasetRenderingOrder.REVERSE表示 表示后面的图在前者后面
categoryplot3.setDatasetRenderingOrder(DatasetRenderingOrder.FORWARD);
return jfreechart;
}
/**
* 日期 2007-4-20
* @author xuquanxing
* @return CategoryDataset 折线的数据集
*/
public static CategoryDataset createDataset1()
{
DefaultCategoryDataset defaultcategorydataset = new DefaultCategoryDataset();
//改成具体指标
String s = "First";
String s1 = "Second";
//改为对应的时间
String s2 = "Type 1";
String s3 = "Type 2";
String s4 = "Type 3";
String s5 = "Type 4";
String s6 = "Type 5";
String s7 = "Type 6";
String s8 = "Type 7";
String s9 = "Type 8";
defaultcategorydataset.addValue(1.0D, s,s2);
defaultcategorydataset.addValue(4D, s, s3);
defaultcategorydataset.addValue(3D, s, s4);
defaultcategorydataset.addValue(5D, s, s5);
defaultcategorydataset.addValue(5D, s, s6);
defaultcategorydataset.addValue(7D, s, s7);
defaultcategorydataset.addValue(7D, s, s8);
defaultcategorydataset.addValue(8D, s, s9);
//分别给每个指标 赋值
defaultcategorydataset.addValue(5D, s1, s2);
defaultcategorydataset.addValue(7D, s1, s3);
defaultcategorydataset.addValue(6D, s1, s4);
defaultcategorydataset.addValue(8D, s1, s5);
defaultcategorydataset.addValue(4D, s1, s6);
defaultcategorydataset.addValue(4D, s1, s7);
defaultcategorydataset.addValue(2D, s1, s8);
defaultcategorydataset.addValue(1.0D, s1, s9);
return defaultcategorydataset;
}
/**
* 日期 2007-4-20
* @author xuquanxing
* @return CategoryDataset 柱状数据集
*/
public static CategoryDataset createDataset2()
{
DefaultCategoryDataset defaultcategorydataset = new DefaultCategoryDataset();
//改成具体指标
String s = "Thrid";
String s1 = "Fourth";
//改为对应的时间
String s2 = "Type 1";
String s3 = "Type 2";
String s4 = "Type 3";
String s5 = "Type 4";
String s6 = "Type 5";
String s7 = "Type 6";
String s8 = "Type 7";
String s9 = "Type 8";
defaultcategorydataset.addValue(11D, s, s2);
defaultcategorydataset.addValue(14D, s, s3);
defaultcategorydataset.addValue(13D, s, s4);
defaultcategorydataset.addValue(15D, s, s5);
defaultcategorydataset.addValue(15D, s, s6);
defaultcategorydataset.addValue(17D, s, s7);
defaultcategorydataset.addValue(17D, s, s8);
defaultcategorydataset.addValue(18D, s, s9);
defaultcategorydataset.addValue(15D, s1, s2);
defaultcategorydataset.addValue(17D, s1, s3);
defaultcategorydataset.addValue(16D, s1, s4);
defaultcategorydataset.addValue(18D, s1, s5);
defaultcategorydataset.addValue(14D, s1, s6);
defaultcategorydataset.addValue(14D, s1, s7);
defaultcategorydataset.addValue(12D, s1, s8);
defaultcategorydataset.addValue(11D, s1, s9);
return defaultcategorydataset;
}
}
双轴图网上例子很少,jfreecahrt自带的例子也不是这样的,弄了半天才成这样,可以直接运行,看下效果!
目前还有点疑问的是,jfree生成的图片会位于tomcat的temp文件夹下,不知该如何指定文件名
还有图片的热点问题,定位很不准确! 待续!
分享到:
相关推荐
jfreechart示例图片dfsdfdsfdsfffffffffffffffffffffffdsfsdf
jfreechart雷达图,jfreechart蜘蛛网图,jfreechart带刻度的雷达图
JFreeChart可以满足大部分图片创建的需求,实例中主要介绍饼图的做法。
jfreechart 堆栈柱状图跟折线图结合拼接 jar包请戳http://download.csdn.net/detail/a156435646/7424707
一份非常简单的jfreechart折线图demo!!!!!!!!
JFreeChart柱图JFreeChart柱图JFreeChart柱图JFreeChart柱图JFreeChart柱图JFreeChart柱图JFreeChart柱图
利用jfreechart绘制的横向立体柱状图,横坐标是数值,纵坐标是数据分类,需要提前引入jfreechart包文件到工程里,才不会报错
flex案例\flex图形\玫瑰图\jfreechart小记(雷达图+折线图).doc
基于jfreechart开发图 资源源于不但搜索,自由源于不但努力
JFreeChart 饼状图 柱状图 柱状图 堆积柱状图 折线图 这个是我特地开发的一个用JFreeChart开发的用来画图的项目,已经开发成形了各种项目的各种需求的项目,并且自己可以拓展,根据需求修改代码,完成项目的需要。 ...
该程序为main 函数,定义了三个方法,分别是jfreechart三种实现折线图的类型,返回的是一个chart 本程序是把图片保存到本地,当然实际应用中,只要在程序和页面中做相关配置即可以使用。 因为图片带点透明,所以...
保证, 本文件解压开就能直接启动运行,struts2 框架
利用jfreechart绘制的漂亮的折线图,实现双纵坐标,折线点标签还带箭头指示,非常直观,需要提前下载jfreechart.jar文件,否则我的类会报错,也即是要配置运行环境
jfreechat生成柱状图,饼状图,折线图,导出饼状图到pdf,excel.
JFreeChart是一组功能强大、灵活易用的Java绘图API,使用它可以生成多种通用性的报表,包括柱状图、饼图、曲线图、甘特图等。它能够用在Swing和Web等中制作自定义的图表或报表,并且得到广泛的应用。本文将通过引领...
java制作jfreechart柱状图 饼状图 折线图 随机数字做的数据源 下载导入即可运行 内含jar包
public JFreeChart createChart(String Ytitle, String title, CategoryDataset lineData, CategoryDataset barData) { //参考附件 return chart; } //struts 部分 <!--begin 维优特例 --> ...
用JFreeChart写的雷达图实例,详细的实现方法。可以看到效果。
Jfreechart柱形图详细设置 /**参数分别为:图表标题 ,目录轴的显示标签 ,数值轴的显示标签 ,数据集 ,是否生成URL链接 图表方向:水平、垂直, 是否显示图例(对于简单的柱状图必须是false) ,是否生成工具 */
java里用JFreeChart画柱状图、折线图、雷达图,三个封装好的方法,可以直接调用。