最近看了些开源的统计图表组件,主要看了fusionChart 和JfreeChart jfreeChart还没有深入了解,暂不做评论。
使用fusionChart主要是被其界面吸引了,各类图表都很好看,下载以后文档也很周全,支持的语言也很多种 ,容易上手。fusionChart工作原理主要是通过后台传xml数据源给报表前台flash flash复杂接收数据并渲染成最终的图表。
至于好不好用,仁者见仁了。我用起来感觉还是很舒服的,暂时还没做比较复杂的图表,目前的功能是够用的。这里主要说说使用中碰到的问题,和我的解决办法
第一 用过的人肯定都有会碰到,就是中文支持,按照默认的输出,肯定最后数据无法渲染。 fusionChart 有两种调用xml数据方法 setDataURL 和setDataXml方法。现就两种方式中文支持方法一一描述一下
1 先说 setDataXml吧,这个好解决,只要输出是response.setCaractEncoding("utf-8")即可,我的系统统一都是utf-8编码,其它我没试。由于配置时已经加过编码过滤器了,所以这部也可省略。这样做的缺点就是输出xml过长可能会有问题。
2 setDataURL方法,我之前上网查过很多网站,说法都是fusionChart free版本的这个有bug,用这个不能支持中文。我试了很多方法也确实都不行,后翻到官方文档中带的例子中输出日语的一个,恍然大悟
Java代码
byte[] utf8Bom = new byte[]{(byte) 0xef, (byte) 0xbb, (byte) 0xbf};
String utf8BomStr = new String(utf8Bom,"UTF-8");
byte[] utf8Bom = new byte[]{(byte) 0xef, (byte) 0xbb, (byte) 0xbf};String utf8BomStr = new String(utf8Bom,"UTF-8");
这一段是关键,就是需要在你输出的xml字符串之前加上utf-8 bom技术标示,这样前台就可以读出中文了。还有一点需要注意,就是url是带参数的如下
/statistics/chartData.do?name=${searchName}${urlParam}“&”符号fusionChart是不认的,也需要URLEncoder.encoding转换中文的支持就先说到这了,我用的 setDataURL 中文显示现在已经没什么问题了
第二 就是比较头疼的 柱状图中横坐标 标题中文不显示的问题,主要因为fusionChart强行旋转了y轴标题的文字,汉字是不支持的 网上的解决办法是加上xml根结点加属性 rotateYAxisName=‘0’ 我试过不起作用
后来才知道是 fusionChart free版本是不支持这个属性,fusionChart v3版本支持这个,我下载过破解的v3版试过,确实好用,但我不喜欢v3的默认风格,所以还是想从free版上解决问题。我的解决办法就是sothink swf decompiler工具把相应的swf破解了,直接改源代码 既然是yAxisName出了问题当然就是从这下手,找到yAxisName的相关代码,很快找到生成的那段AS
Js代码
if (this.Params.xAxisName != "")
{
createText(this.getLevel(), this.Params.xAxisName, this.Objects.Canvas.xPos + this.Objects.Canvas.width / 2, this.Objects.Canvas.height + this.Objects.xAxisName.yPos, this.Params.outCnvBaseFont, this.Params.outCnvBaseFontSize, this.Params.outCnvBaseFontColor, true, "center", "center", null, true);
} // end if
if (this.Params.yAxisName != "")
{
createText(this.getLevel(), this.Params.yAxisName, this.Objects.yAxisName.xPos, this.Objects.Canvas.yPos + this.Objects.Canvas.height / 2, "Verdana", Number(this.Params.outCnvBaseFontSize) + 1, this.Params.outCnvBaseFontColor, false, "center", "center", 270, true);
} // end if
if (this.Params.xAxisName != "") { createText(this.getLevel(), this.Params.xAxisName, this.Objects.Canvas.xPos + this.Objects.Canvas.width / 2, this.Objects.Canvas.height + this.Objects.xAxisName.yPos, this.Params.outCnvBaseFont, this.Params.outCnvBaseFontSize, this.Params.outCnvBaseFontColor, true, "center", "center", null, true); } // end if if (this.Params.yAxisName != "") { createText(this.getLevel(), this.Params.yAxisName, this.Objects.yAxisName.xPos, this.Objects.Canvas.yPos + this.Objects.Canvas.height / 2, "Verdana", Number(this.Params.outCnvBaseFontSize) + 1, this.Params.outCnvBaseFontColor, false, "center", "center", 270, true); } // end if
注意看倒数第五 和倒数第二个参数 输出x轴和y轴有什么不同,改成一样就可以了,编译好把flash替换了刷新页面 横向输出的y轴坐标已经出来了。还有点不完美的就是第一个字显示了一半被截掉了一样,看着不舒服,解决办法: 输出的xml根节点加上 chartLeftMargin=‘30’属性。ok大功告成
破解过fusionChart的free版才知道,这个版是用的as1.0写的,还好不难改,估计和历史原因有关吧,看了v3版的代码用的高版本 要规范很多了,很多as独立成文件,文件夹也组织有序些。
分享到:
相关推荐
在某些情况下,我们可能需要动态生成 XML 数据来驱动 FusionCharts,比如从数据库中获取数据。在这种情况下,如果你的后端代码是用 PHP 编写的,可以使用以下方法确保输出的 XML 包含正确的 BOM 标识: ```php ...
包含FusionCharts使用手记 官方Demo 中文开发指南 解决中文乱码Demo Area2D.swf Bar2D.swf Bubble.swf Column2D.swf Column3D.swf Doughnut2d.swf Doughnut3D.swf FCExporter.swf Funnel.swf InverseMSArea.swf ...
在C#开发环境中,FusionCharts可以与ASP.NET、WinForms或其他.NET框架结合使用,为应用程序添加美观的数据呈现功能。本示例主要关注如何在C#项目中集成并使用FusionCharts。 首先,要使用FusionCharts,你需要在你...
标题"FusionCharts使用实例"指的是使用FusionCharts这个JavaScript图表库来创建动态、交互式的图表。FusionCharts是一个广泛使用的工具,它允许开发者通过简单的API和丰富的图表类型将复杂的数据可视化,适用于各种...
FusionCharts V3使用文档.pdf
**FusionCharts免费使用手册** FusionCharts是一款强大的JavaScript图表库,它允许开发者轻松地在网页上创建交互式、丰富多彩的图表。这份免费使用手册将深入介绍如何利用FusionCharts来构建各种图表,以增强数据...
在Java Web工程中使用FusionCharts,首先需要将所有Flash文件(通常在下载包的Charts目录下)复制到WebRoot目录,这些文件是生成图表的模板。接着,将`FusionCharts.jsp`文件(在Includes包中)放入WebRoot或其子...
在本示例中,我们将探讨如何使用FusionCharts来创建一个饼状图。 首先,从提供的代码片段可以看到,创建FusionCharts图表的基本步骤如下: 1. **引入JavaScript库**: 在HTML文件的`<head>`部分,通过`<script>`...
**使用FusionCharts展示JSON数据步骤** 1. **引入FusionCharts库**:首先,我们需要在HTML文件中引入FusionCharts的JavaScript库。这可以通过添加`<script>`标签来实现,确保链接到正确的FusionCharts库文件。 2. ...
使用FusionCharts非常简单,主要涉及以下几个步骤: 1. **数据源准备**:首先,你需要一个数据源,通常是XML文件。例如,`data.xml`包含了 Monthly Sales Summary 的数据,每个`set`标签代表一个月的销售数据,包含...
**融合图表(FusionCharts)使用与实例** FusionCharts是一款强大的JavaScript图表库,它能够帮助开发者轻松地在网页上创建交互式、丰富的数据可视化效果。这个库支持超过90种图表类型,包括柱状图、饼图、线图、...
FusionCharts是一款强大的数据可视化工具,专为生成各种报表而设计。它以其便捷性、高效性和灵活性著称,使得...通过学习和掌握FusionCharts的使用,你将能更好地理解和传达复杂的数据信息,为企业决策提供有力的支持。
为了更好地利用这些特性,你需要了解FusionCharts的API,包括如何配置图表对象、设置数据源、以及如何定义和使用JavaScript事件处理函数。在实际项目中,这些功能可以帮助你构建交互性强、用户体验良好的数据可视化...
FusionCharts是一款强大的数据可视化工具,它通过交互式的图表来展示复杂的数据。在这个最全的FusionCharts SWF文件集合中,我们找到了一系列用于不同类型的图表展示的Flash文件。SWF是Adobe Flash Player支持的文件...
例如,你可以使用`<script>`标签来引用FusionCharts的JavaScript库,并在其中定义`FusionCharts`对象实例。 3. **加载HTML到WebView**: - 使用WebView的`loadDataWithBaseURL()`或`loadUrl()`方法加载HTML内容。...
FusionCharts是一款强大的数据可视化工具,专为创建交互式、丰富多彩的...这些文件为我们提供了学习和使用FusionCharts的资源,通过深入研究这些内容,开发者可以更好地理解和掌握FusionCharts的使用方法和高级特性。