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可以满足大部分图片创建的需求,实例中主要介绍饼图的做法。
本教程将详细讲解如何在Struts2框架中使用JFreeChart来显示图片。 首先,我们需要了解JFreeChart的基本用法。JFreeChart提供了丰富的API,可以方便地创建和定制图表。以下是一般步骤: 1. **创建图表对象**:例如...
JFreeChart是一款强大的Java图表库,它允许开发者在Java应用程序或网页中创建多种类型的图表,包括雷达图(也称为蜘蛛网图)。本篇将深入探讨如何利用JFreeChart生成雷达图以及相关的数据导出功能。 **雷达图的使用...
在本篇中,我们将深入探讨如何利用JFreeChart来制作雷达图(也称为蜘蛛图或星形图),并理解其相关知识点。 1. **JFreeChart简介** JFreeChart是一个开源项目,其目标是提供一个可以免费使用的高质量图表API。它...
JFreeChart是一款强大的Java图表库,它允许开发者在应用程序、Swing组件或Web应用中创建各种图表,如柱状图、饼图、折线图等。这个库支持丰富的定制选项,使得图表可以按照用户需求进行个性化设计。在这个...
jfreechart绘制的风速风向玫瑰图 jfreechart是Java中一个流行的图表库,它提供了许多种类的图表,包括柱状图、折线图、饼图、雷达图等。本文主要介绍如何使用jfreechart绘制风速风向玫瑰图。 首先,了解jfreechart...
《JFreeChart生成图片并显示》 在Java开发中,我们常常需要生成各种图表来直观地展示数据,比如折线图、柱状图、饼图等。JFreeChart是一个强大的开源Java库,它提供了丰富的图表生成功能,可以满足开发者在各种应用...
jfreechart 堆栈柱状图跟折线图结合拼接 jar包请戳http://download.csdn.net/detail/a156435646/7424707
JFreeChart是一款强大的Java图形库,它允许开发者创建各种复杂的图表,包括我们这里关注的雷达图(也称为蜘蛛网图)。雷达图是一种多轴图表,常用于比较多个变量在同一尺度上的表现,或者展示数据在多个维度上的分布...
在Java编程环境中,JFreeChart是一个非常流行的库,用于创建各种复杂的图表,包括线图、柱状图、饼图以及我们的焦点——雷达图。本文将深入探讨如何利用JFreeChart库来实现一个雷达图实例,这有助于数据可视化,特别...
JFreeChart柱图JFreeChart柱图JFreeChart柱图JFreeChart柱图JFreeChart柱图JFreeChart柱图JFreeChart柱图
**JFreeChart是一种广泛使用的Java库,用于创建各种高质量的2D图表,如折线图、柱状图、饼图、散点图等。在"JfreeChart各种图形案例"这个资源中,包含了多种JFreeChart图形的示例,旨在帮助开发者直观地理解如何在...
JFreeChart是一款强大的Java库,用于创建各种类型的图表,包括柱状图、饼图、线图、散点图等。在“JFreeChart混合图表演示”中,我们重点探讨如何利用JFreeChart来创建一个包含多种图表类型的混合图表,以提供更丰富...
利用jfreechart绘制的漂亮的折线图,实现双纵坐标,折线点标签还带箭头指示,非常直观,需要提前下载jfreechart.jar文件,否则我的类会报错,也即是要配置运行环境
JFreeChart 饼状图 柱状图 柱状图 堆积柱状图 折线图 这个是我特地开发的一个用JFreeChart开发的用来画图的项目,已经开发成形了各种项目的各种需求的项目,并且自己可以拓展,根据需求修改代码,完成项目的需要。 ...