效果图和源码:http://blog.sina.com.cn/u/4762fc13010009r9
由于新浪博客不能发下载链接(我也没有空间放),我也很少来csdn看自己发过的帖子
所以麻烦需要的朋友请在博客后留言留下信箱,我会在第一时间发到你的邮箱。    前段时间一个项目需要在IE(这个项目没有支持firefox等浏览器的需求)上呈现3D统计图。
 
    最初的解决方案是:用jfreechart等生成3D图,在页面上显示。
    缺陷:加入链接、事件等比较不方便
 
    改进后的解决方案:用flash画3D图,然后调用object显示。
    缺陷:调用的页面已经有很多flash object了(一些复杂的需要交互的统计图,不得不用flash做,如:地图等),导致页面载入很慢。
 
    于是想到能不能用vml来做。当时还不像现在那么忙,空闲时间比较多。于是抽空写了一个vml的3D柱状图。缺陷也是非常明显:不支持IE以外的浏览器,甚至我在IE7下面还没有测试过。
 
    由于项目工期紧,flash的方案已经通过严格的测试了,所以最后没有采用vml的方案,我写的这个东西到一半也就夭折了。所幸还能给出一个demo。给需要的人吧。
 
     可能有的朋友见过这个图,这个是从网上找的一个效果修改的,原作者是龚鸣。大家可以上网搜到他最初的代码。
     除了显示效果,其它的东西我都重写了。主要改进如下:
    (1)支持位置控制。可以嵌入到页面的任何地方。对于嵌入的容器(div等),可以支持css控制。龚鸣的版本是没办法做到的,使用的是绝对位置。
    (2)重写数据定义方式:以前是数组,现在用json
    (3)重写调用方式:面向对象
    (4)支持数据重用
    (5)柱状图和文字过长,可自动用...代替,同时柱子和文字都支持链接、事件等。
 
    调用方式如下:
 
// 初始化数据,json
var d = '[{"value":"201","name":"阿里巴巴 报价 中华 版权 代理 ","id":"12661_61","url":"http://www.baidu.com","target":"_blank"},{"value":"43","name":"公积金贷款 存款 职工 专家 ","id":"12661_49","behavior":"active(this)"},{"value":"42","name":"美国伊拉克 华盛顿 五角大楼 越战 ","id":"12651_32"},{"value":"26","name":"单位 广州 房价 政府 市长 ","id":"12671_29"},{"value":"26","name":"学生 学校 泰国 寄宿 警方 ","id":"12651_40"}]';var data = eval('('+d+')');// 初始化柱状图
var h = new Histogram(data,340,280);// 一些属性
h.setTitle('当日前五热点统计图');
h.setNameLabel('主题名称');
h.setValueLabel('文档数量');// 画图
h.draw('m','V');
 
    本来打算加上svg,以支持非ie的浏览器。但是由于时间关系,仅仅这个vml版本的很多已知问题都没有纠正。我想我近期也没有精力来做这个了。放出来,需要的人拿去用吧~~
 
    尽管代码我完全重写了,但是显示效果还是要注明来自网友龚鸣和绝对零度(awaysrain),版权就归这两位所有吧,我没有其他附加的限制。
   需要索取源码的,请在
   http://blog.sina.com.cn/u/4762fc13010009r9
   留下信箱~~