java 使用fusioncharts_FusionCharts在Java中的基本使用

一、介绍

FusionCharts是一个基于XML和Flash的图表组件,其中FusionCharts Free是免费的,其功能也十分强大、美观。

其可以用在PHP、JSP、ASP等等。

二、常见的图表类型

1.Area图

2.Bar图

3.Column图

4.Line图

5.Pie图

6.Stacked图

7.Combine图

三、数据源

其数据源形式为XML的形式,XML形式分为单序列和多序列XML,以及其他的格式。

四、简单使用

目录结构:

test.html

data.xml

FusionCharts

|----------Charts

|                |--------------- many charts *.swf

|----------JSClass

|                |--------------- FusionCharts.js

test.html代码:

html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

var chart =

new FusionCharts('FusionCharts/Charts/FCF_Pie2D.swf', "ChartId", "400", "300");

chart.setDataURL("data.xml");

chart.render('Pie');

要注意添加以下几行代码,并注意其中的路径:

(1)导入JS: 

(2)图表显示的地方:

......

(3)脚本:用于设置显示什么图、图的数据等

var chart =

new FusionCharts('FusionCharts/Charts/FCF_Pie2D.swf ', "ChartId", "400", "300");

chart.setDataURL("data.xml");

chart.render('Pie ');

其中,chart.render("Pie")中的Pie是你要显示图的div的id

data.xml

显示效果如下:

b521ae0099a153f88479ee2133c8dd95.png

也可以不用单独的文件存储xml,可以利用setDataXML方法,如下:

var chart =

new FusionCharts('FusionCharts/Charts/FCF_Pie2D.swf', "ChartId", "400", "300");

chart.setDataXML("");

chart.render('Pie');

五、单序列XML形式

举例:

标签的一些属性:

baseFont: 图表的字体

baseFontSize: 图表的字号

caption: 标题

subcaption: 子标题

yAxisMinValue: y轴的最小值

yAxisMaxValue: y轴的最大值

hovercapbg: 当鼠标悬停时显示的背景色

hovercapborder: 当鼠标悬停时边框色

formatNumber(0/1):是否用逗号分隔(1--用逗号分隔,0--不用)

formatNumberScale(0/1): 是否添加K、M到数字(1--添加,0--不添加)

decimalPrecision: 小数的位数

showValues(0/1): 是否显示数值

numdivlines: 水平网格线的条数

numVdivlines: 垂直网络线显示的条数

showNames(0/1): 是否显示x轴的每个数据的名称

rotateNames(0/1): 是否旋转x轴的每个数据的名称

rotateYAxisName(0/1):是否显示y轴的名称

showAlternateHGridColor(0/1): 是否显示交替的网格颜色

标签:

name: x轴的每个数据的名称

value: 值

有几种图可以使用单序列的XML格式的数据

(1)Pie图

FCF_Pie2D.swf  FCF_Pie3D.swf

f2391efc50483b822ad70a621df1d62b.png

30acf6f7eee6f8b03da00b7e48d1ae2e.png

(2)Area图

FCF_Area2D.swf

04246d29673da680878e739bf4c9bd3f.png

(3)Bar图

FCF_Bar2D.swf

fe091ca76798bf86b020568af2dcf807.png

(4)Column图

FCF_Column2D.swf  FCF_Column3D.swf

9f331c3503be43221d8932c6a6b0502d.png

79b44394b85894546d221a1c238ccad8.png

(5)Line图

FCF_Line.swf

55fc0a4c6e3786d4e6e2d45a094cbf38.png

(6)Doughnut图

FCF_Doughnut2D.swf

d52a96380963b66e1783f0ec9254924d.png

六、多序列XML形式

举例:

' yaxisname='数量' hovercapbg='FFECAA' hovercapborder='F47E00' formatNumberScale='0' decimalPrecision='0' showvalues='1'

numdivlines='10' numVdivlines='0' shownames='1' rotateNames='1' >

基本上同单序列XML形式

指明x轴有几个种类

对应一个种类

name:种类名

指明一个序列集,序列集中值的个数同category的种类数

seriesname:序列的名称

:序列的一个值

有几种图可以使用多序列的XML格式的数据

(1)Area图

FCF_MSArea2D.swf

7b8491e6161f34d576f106ac275e46da.png

(2)Bar图

FCF_MSBar2D.swf

53a4a5c44b6f6641ee8d8e042eb58820.png

(3)Column图

FCF_MSColumn2D.swf  FCF_MSColumn3D.swf

9c92dab0090c1bc08f57f4b6f1f7e2b9.png

73442d875fc84102535180bc8c8fc26c.png

(4)Line图

FCF_MSLine.swf

104f1ec961d51ee4b515c017eadafea6.png

(5)Stacked图

FCF_StackedArea2D.swf

ac71c55d2ae55e3fec60af655f935097.png

FCF_StackedBar2D.swf

3b12a3435732e6de213282667a775f39.png

FCF_StackedColumn2D.swf  FCF_StackedColumn3D.swf

c0dc168f78453eb10f331bdaa1c9c477.png

7d41b0b6c3ec9853290c7c58a51098e6.png

七、产生上述XML的类

public class FusionChartsXMLGenerator {

public static final int BOOLEAN_TRUE = 0;

public static final int BOOLEAN_FALSE = 1;

private static Logger LOGGER = LoggerFactory.getLogger(FusionChartsXMLGenerator.class);

private static FusionChartsXMLGenerator singleton = new FusionChartsXMLGenerator();

public static FusionChartsXMLGenerator getInstance() {

return singleton;

}

private FusionChartsXMLGenerator() {}

private String[] colors = {"AFD8F8", "F6BD0F", "8BBA00", "FF8E46", "008E8E",

"D64646", "8E468E", "588526", "B3AA00", "008ED6", "9D080D", "A186BE"};

/**

* data形式为:

* "" category1,category2,category3...-------->这是第一行

* type1 value1,value2,value3,...

* type2 value1,value2,value3,...

* ......

*/

public String getMultiDSXML(List> data,

String caption, String subCaption,

String xAxisName, String yAxisName,

int showNames,int showValues,

int decimalPrecision, int rotateNames) {

double max = -Double.MAX_VALUE, min = Double.MAX_VALUE;

for (int i = 1; i 

List row = (List)data.get(i);

for (int j = 1; j 

String val = (String)row.get(j);

if (val != null && val.length() > 0) {

double v = Double.parseDouble(val);

if (v > max) {

max = v;

}

if (v 

min = v;

}

}

}

}

if (max == -Double.MAX_VALUE) {

max = 0;

}

if (min == Double.MAX_VALUE) {

min = 0;

}

if (min == max && min == 0) {

min = 0;

max = 100;

}

max = Math.abs(max / 10) + max;

min = min - Math.abs(min / 10);

int valCnt = ((List)data.get(0)).size() - 1;

if (valCnt > 30) {

showNames = 0;

showValues = 0;

}

StringBuffer strXml = new StringBuffer();

strXml.append("

caption +"' subcaption='" + subCaption + "' " +

"yAxisMinValue='" + min + "' yAxisMaxValue='" + max + "' " +

"xAxisName='" + xAxisName + "' yAxisName='" + yAxisName + "' hovercapbg='FFECAA' " +

"hovercapborder='F47E00' formatNumberScale='0' decimalPrecision='" + decimalPrecision + "' " +

"showValues='" + showValues + "' numdivlines='10' numVdivlines='0' " +

"showNames='" + showNames + "' rotateNames='" + rotateNames + "' " +

"rotateYAxisName='0' showAlternateHGridColor='1'>");

strXml.append("");

List headerRow = (List)data.get(0);

for (int i = 1; i 

strXml.append("");

}

strXml.append("");

for (int i = 1; i 

List row = (List)data.get(i);

String name = (String)row.get(0);

String color = colors[(i - 1) % 12];

strXml.append("

"color='" + color + "' anchorBorderColor='" + color + "' " +

"anchorBgColor='" + color + "'>");

for (int j = 1; j 

strXml.append("");

}

strXml.append("

");

}

strXml.append("

");

String str =  strXml.toString();

LOGGER.info("=============/n" + str + "/n==============/n");

return str;

}

/**

*  数据格式为:

*  name value

*  name value

*  ......

*/

public String getSingleDSXML(List> data,

String caption, String subCaption,

String xAxisName, String yAxisName,

int showNames,int showValues,

int decimalPrecision, int rotateNames) {

double max = -Double.MAX_VALUE, min = Double.MAX_VALUE;

for (int i = 0; i 

List row = data.get(i);

double value = Double.parseDouble(row.get(1));

if (value > max) {

max = value;

}

if (value 

min = value;

}

}

if (max == -Double.MAX_VALUE) {

max = 0;

}

if (min == Double.MAX_VALUE) {

min = 0;

}

if (min == max && min == 0) {

min = 0;

max = 100;

}

max = Math.abs(max / 10) + max;

min = min - Math.abs(min / 10);

int valCnt = data.size() - 1;

if (valCnt > 30) {

showNames = 0;

showValues = 0;

}

StringBuffer strXml = new StringBuffer();

strXml.append("

caption +"' subcaption='" + subCaption + "' " +

"yAxisMinValue='" + min + "' yAxisMaxValue='" + max + "' " +

"xAxisName='" + xAxisName + "' yAxisName='" + yAxisName + "' hovercapbg='FFECAA' " +

"hovercapborder='F47E00' formatNumberScale='0' decimalPrecision='" + decimalPrecision + "' " +

"showValues='" + showValues + "' numdivlines='10' numVdivlines='0' " +

"showNames='" + showNames + "' rotateNames='" + rotateNames + "' " +

"rotateYAxisName='0' showAlternateHGridColor='1'>");

for (int i = 0; i 

List row = data.get(i);

String label = row.get(0);

String value = row.get(1);

String color = colors[i % 12];

strXml.append("");

}

strXml.append("

");

String str =  strXml.toString();

LOGGER.info("=============/n" + str + "/n==============/n");

return str;

}

}

八、其他图

(1)漏斗图

FCF_Funnel.swf

XML:

===================================

===================================

def7cd1f3141c54b577ac49c394bfa42.png

(2)线柱组合图

FCF_MSColumn2DLineDY.swf    FCF_MSColumn3DLineDY.swf

XML:

===================================

========================================

a5263ae8f5affa08ddffe38107193c6f.png

08cd9a8c779c869b3c0052787643977b.png

(3)K线图

FCF_Candlestick.swf

XML:

========================================

================================================

40f5b7e44b6ac628b07ac4493c12dc6a.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FusionCharts是一个强大的数据可视化库,可以帮助开发人员创建漂亮而交互式的图表和图形。下面是一个关于如何使用FusionCharts的详细说明,包括实例、图解和Demo。 1. 安装FusionCharts:首先,你需要从FusionCharts官方网站下载和安装FusionCharts库。你可以选择下载免费版本或购买商业许可证。 2. 引入FusionCharts库:将FusionChartsJavaScript文件引入你的HTML文件。你可以通过将以下代码添加到`<head>`标签来实现: ```html <script src="fusioncharts.js"></script> ``` 3. 创建一个容器:在HTML文件创建一个用于显示图表的容器。你可以使用一个`<div>`标签,并为其指定一个唯一的ID。例如: ```html <div id="chartContainer"></div> ``` 4. 准备数据:准备用于绘制图表的数据。你可以使用JavaScript对象或从服务器获取的JSON数据。 5. 创建图表对象:使用FusionCharts提供的API创建一个图表对象。你需要指定图表类型、数据和容器ID。例如,下面的代码创建了一个柱状图: ```javascript var chart = new FusionCharts({ type: 'column2d', renderAt: 'chartContainer', dataSource: { data: [ { label: 'January', value: '100' }, { label: 'February', value: '200' }, { label: 'March', value: '150' } ] } }); ``` 6. 渲染图表:调用图表对象的`render()`方法,将图表渲染到指定的容器。例如: ```javascript chart.render(); ``` 7. 自定义图表:你可以使用FusionCharts提供的各种配置选项来自定义图表的外观和行为。例如,你可以更改图表的颜色、字体、标题等。你可以参考FusionCharts的文档以获取更多自定义选项。 8. 实例和图解:根据你的具体需求,可以参考FusionCharts的官方文档和示例来学习更多关于使用FusionCharts的实例和图解。 9. Demo:你可以在FusionCharts的官方网站上找到各种示例和演示,以帮助你更好地理解和使用FusionCharts。你可以尝试运行这些Demo,并从获取灵感和指导。 希望这个详细说明对你有所帮助!如果你还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值