`
jianbo.hc
  • 浏览: 5567 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

amcharts使用总结

阅读更多
    由于业务需要,需要将后台数据使用图表的方式展现在前端。目前关于图表展现的软件比较多,有high chart,JFree charts 等。我们选择的是amcharts。
    最开始我们使用amcharts1.6版本,其具有较低的学习成本。其在前端的工作量很少,主要写如下代码:


var uri2="checkSeatQuery01.htm?dep="+dep+"&arr="+arr+"&date="+date+"&time="+Math.random();
var so2 = new SWFObject("/static/js/amline.swf", "amline", "100%", "100%", "8", "#FFFFFF");
so2.addVariable("path", "/static/js/");
so2.addVariable("settings_file", encodeURIComponent("/static/xml/amline_settings_checkSeat2.xml"));
so2.addVariable("data_file", escape(uri2));//通过url传入动态数据
so2.write("flashcontent2");

    其中amline_settings_checkSeat2.xml为图表配置文件,可以参考http://extra.amcharts.com/editor/line/ ,你实时的调节相关配置参数,就能动态看到效果了,然后他还可以直接帮你生成你所需要的配置文件,非常方便。
    而uri2则负责在后台将请求数据封装成xml格式,如下:

@RequestMapping("checkSeatQuery01.htm")
public void checkSeatQuery01(final HttpServletRequest request, final HttpServletResponse response,ModelMap result) throws IOException
{
       
        String dep=UnicodeToString(request.getParameter("dep"));
        String arr=UnicodeToString(request.getParameter("arr"));
        String date=request.getParameter("date");
        try{
                List<Map<String,Object>> resultlist=checkSeatService.selectCheckSeat(dep, arr, date);
               
                String s=generateDataXmlString(resultlist);
                PrintWriter writer = response.getWriter();
                writer.write(s);
        }
        catch(Exception e){
                logger.info("check seat service failure",e);
        }
       
}

private static String generateDataXmlString(List<Map<String,Object>> list) {
        if (list == null || list.size() == 0){
                return "<chart><series></series><graphs></graphs></chart>";
        }
        StringBuffer series = new StringBuffer("<chart><series>");
        StringBuffer graphs=new StringBuffer("<graphs>");
        for(int i=0;i<list.size();i++){
                Iterator it = list.get(i).keySet().iterator();
                int j=0;
                graphs.append("<graph gid=\""+i+"\">");
                if(!it.hasNext()){
                        series.append("<value xid=\"0\">0</value>");
                        graphs.append("<value xid=\"0\">0</value>");
                }
                while(it.hasNext()){
                        String key=(String)it.next();
                        if(i==0){
                                series.append("<value xid=\""+j+"\">"+key+"</value>");
                        }
                        graphs.append("<value xid=\""+j+"\">"+list.get(i).get(key)+"</value>");
                        j++;
                }
                if(i==0)
                series.append("</series>");
                graphs.append("</graph>");
               
               
        }
        series.append(graphs).append("</graphs></chart>");
        return series.toString();
}




    以上使用十分简单,但是由于是url主动去请求数据,当在一个页面上画多图,同时应用在存在多机器的时候,页面上的图展示的可能是不同机器的数据(而不是同一机器上的,不符合需求)。
    随后,我们使用ancharts2.2版本,将数据一次性传到前端,用js解析,然后交给amcharts画图,主要的工作集中到前端JS如下:


<script type="text/javascript">
var chart1;
var chart2;
var chart3;
jQuery(document).ready(function(){
var request_rate;//后台传入的数据集
var success_percent;//后台传入的数据集
var request_rate;//后台传入的数据集
//var chartData=[{data:1000,price:125},{data:1230,price:100},{data:1250,price:150},{data:1500,price:140},{data:900,price:80}]
//一共画三张图;
amchartDisplay(chart1,parseData(collect_performance),"chartdiv0");
amchartDisplay(chart2,parseData(success_percent),"chartdiv1");
amchartDisplay(chart3,parseData(request_rate),"chartdiv2");
});
//数据解析函数,以满足amcharts输入要求。
function parseData(data){
//alert(data);
var dataProvider=[];
var rows = data.split(";");
for (var i = 0; i < rows.length; i++){
if (rows[i]) {                   

var column = rows[i].split(":");
var time = column[0];
var value = column[1];
var dataObject = {data:time, price:value};
dataProvider.push(dataObject);
}

//alert(dataProvider);
return dataProvider; 
}
//amcharts画图函数
function amchartDisplay(chart,chartData,div){
chart = new AmCharts.AmSerialChart();
//chart.pathToImages = "/lib/samples/javascript/images/";
chart.panEventsEnabled = true;
chart.zoomOutButton = {
backgroundColor: "#000000",
backgroundAlpha: 0.15
};
chart.dataProvider = chartData;
chart.validateData();
chart.categoryField = "data";

//设置横坐标;
var categoryAxis = chart.categoryAxis;
// categoryAxis.parsedatas = true; // as our data is data-based, we set parsedatas to true
// categoryAxis.minPeriod = "DD"; // our data is daily, so we set minPeriod to DD
//categoryAxis.dashLength = 1;
categoryAxis.gridAlpha = 0;
// categoryAxis.axisColor = "#DADADA";
// categoryAxis.gridCount = 15;
//categoryAxis.autoGridCount = false;

// 设置纵坐标value               
var valueAxis = new AmCharts.ValueAxis();
valueAxis.axisColor = "#DADADA";
valueAxis.dashLength = 1;
//valueAxis.logarithmic = true; // this line makes axis logarithmic
chart.addValueAxis(valueAxis);

// GRAPH
var graph = new AmCharts.AmGraph();
graph.type = "smoothedLine";
graph.bullet = "round";
graph.bulletColor = "#FFFFFF";
graph.bulletBorderColor = "#00BBCC";
graph.bulletBorderThickness = 2;
graph.bulletSize = 7;
graph.title = "Price";
graph.valueField = "price";
graph.lineThickness = 2;
graph.lineColor = "#00BBCC";
chart.addGraph(graph);
// CURSOR
var chartCursor = new AmCharts.ChartCursor();
chartCursor.cursorPosition = "mouse";
chart.addChartCursor(chartCursor);
// SCROLLBAR
var chartScrollbar = new AmCharts.ChartScrollbar();
chart.addChartScrollbar(chartScrollbar);
// WRITE
var parent=document.getElementById(div);
while(parent.hasChildNodes())    //注意,此处需要清空div内容,以避免浏览器缓存上次的图形信息。
{
parent.removeChild(parent.firstChild);
}
chart.write(div);//画图到指定的div上

}  

</script>
分享到:
评论

相关推荐

    asp.net 图表控件 amCharts

    总结来说,amCharts是一个强大的图表控件,适用于ASP.NET环境,其丰富的功能和优秀的用户体验使其成为数据可视化的理想选择。无论是在企业级应用还是个人项目中,amCharts都能为数据展示带来无与伦比的表现力。通过...

    amcharts 超好的用来制作flash图表工具

    6. **许可证和使用**:amcharts提供免费和商业两种版本,免费版适用于个人和非商业项目,商业版则为专业开发和商业用途提供了更多的功能和服务。 7. **版本更新**:从提供的压缩包文件名称来看,例如amcharts_...

    amcharts-3.20.20

    - **licence.txt**:许可协议,详细说明了使用amCharts的法律条款和条件。 - **amcharts**:包含amCharts的核心库文件,如`amcharts.js`,是创建图表的关键。 - **images**:存放图表相关的图像资源,如图标、背景等...

    amcharts官方离线文档

    总结起来,AmCharts的离线文档是开发人员宝贵的工具,它不仅提供了全面的指导,还允许开发者在不依赖互联网的情况下进行工作。无论是刚开始接触AmCharts的新手,还是寻求提高现有项目的专业开发者,都能从中受益匪浅...

    amCharts开发实例

    amCharts是一款强大的JavaScript图表库,它为Web开发者...总结,amCharts是ASP.NET开发中数据可视化的强大工具,通过学习和实践提供的开发实例,开发者能够快速掌握其用法,并在项目中创造出引人注目的数据展示效果。

    amcharts

    在博客链接中,可能包含了关于如何使用AmCharts进行数据可视化的教程或者案例分析。通常,博主可能会分享自定义图表样式、添加动画效果、处理实时数据更新、与其他前端框架集成等技术细节。遗憾的是,由于没有实际的...

    amcharts 折线图 asp.net版

    "amcharts 折线图 asp.net版" 指的是使用AmCharts库在ASP.NET平台上创建折线图的教程或项目。AmCharts是一款强大的JavaScript图表库,提供了丰富的图表类型,包括折线图。在ASP.NET环境中,开发者可以利用AmCharts的...

    amcharts_flex_components_1.8.1.3

    总结一下,"amcharts_flex_components_1.8.1.3" 是一个专为Adobe Flex开发者设计的图表库,包含了必要的组件、文档、示例和构建工具,可以帮助开发者轻松地创建出富有吸引力的数据可视化应用。无论是初学者还是经验...

    amcharts商业版

    总结来说,AmCharts商业版是一个全方位的解决方案,提供丰富的图表类型、高度的定制能力以及强大的技术支持,是企业级项目中实现数据可视化的理想选择。通过学习和掌握它的使用,开发者能够创建出专业且吸引人的数据...

    amcharts图表应用

    总结来说,AmCharts是一个强大的JavaScript图表库,提供了丰富的图表类型和高度定制化选项。通过学习和实践,开发者可以创建出具有专业视觉效果和交互体验的数据可视化工具。而"chartsetting"文件则可能是为了辅助...

    amcharts教程

    总结来说,AmCharts是一个强大而灵活的JavaScript图表库,适合创建专业级的数据可视化应用。通过熟练掌握其API和配置选项,你可以创建出符合业务需求的精美图表,提升数据的可读性和分析效率。在实际项目中,根据...

    WPF中使用amCharts绘制股票K线图demo

    在本文中,我们将深入探讨如何在Windows Presentation Foundation (WPF) 应用程序中使用amCharts库来绘制股票K线图。amCharts是一款强大的数据可视化工具,尤其适用于创建交互式的图表,包括股票K线图。K线图是金融...

    amcharts 柱状图

    在本篇中,我们将深入探讨如何使用AmCharts来创建一个柱状图,并通过实际的代码示例——"amlinetest"来展示其具体实现。 ### 一、AmCharts 概述 AmCharts 是一套基于Web的图表解决方案,支持SVG和VML渲染,兼容...

    amcharts_flex_components_1.8.3.3

    总结来说,amCharts_flex_components_1.8.3.3是Flex开发者进行数据可视化的理想选择,其强大的功能和易用性使得复杂的统计信息得以直观呈现。通过熟练掌握这个组件库,开发者能够为用户打造出专业、直观且富有吸引力...

    amcharts-php-master

    总结来说,`amcharts-php-master` 是一个强大的工具,它结合了 PHP 后端处理和 AmCharts 的前端展示能力,使得开发者能够轻松创建出富有吸引力的动态图表。无论是数据的处理、图表的配置,还是交互性的实现,都提供...

    amcharts 官方组件

    总结,这个压缩包对于那些需要使用或学习amcharts,尤其是2012年版本特性的开发者来说,是非常宝贵的资源。它涵盖了amcharts的核心功能和当时的最新特性,可以帮助开发者构建出富有视觉吸引力且交互性强的图表应用。

    amcharts嵌入到flex中

    总结,将AmCharts嵌入到Flex中涉及的主要步骤包括:设置Flex与JavaScript的交互、加载AmCharts库、创建HTML容器、通过JavaScript初始化图表以及传递数据。这个过程需要对Flex的ActionScript编程、JavaScript以及...

    amcharts_2.10.1 案例和源码下载

    3. **创建图表**:使用amCharts API创建图表实例,并设置图表类型、数据源、样式等属性。 4. **绘制图表**:将图表附加到HTML元素上,让其在页面上显示出来。 5. **添加交互功能**:可选地,添加事件监听器以响应...

    amcharts js实现折线柱状扇形图统计

    总结来说,"amcharts js实现折线柱状扇形图统计"是一个涵盖数据可视化的主题,涉及AmCharts库在创建折线图、柱状图和扇形图上的应用。通过学习和实践,开发者可以利用这个强大的工具创建出美观且互动性强的统计图表...

    JS插件amCharts实现绘制柱形图默认显示数值功能示例

    总结来说,通过上述步骤,我们可以使用amCharts这个强大的JavaScript图表库来绘制出既美观又功能丰富的柱形图,并且实现默认显示每个柱子上的数值。这对于那些需要在网页上进行数据可视化展示的开发者而言,是一个...

Global site tag (gtag.js) - Google Analytics