highcharts 应用总结

背景:新开发一个模块,需要将Top数据以图表形式展现,网上查找了一些资料后,选择了highcharts。写这篇博文是为了记录下应用的流程,便于以后回顾。

highcharts中文网:http://www.hcharts.cn/demo/index.php?p=27

highcharts交流群:63112678

/*
 * 创建图表展示
 */
function createHighChart(){
	/*var x_categ = ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月','10月','11月','12月'];
    var series = [{name: '宝路',visible:true,data: [100, 120, 140,160,180,200,220,240,260,280,300,320]},
                  {name: '伟嘉',visible:true,data: [90, 110, 130,150,170,190,210,230,250,270,290,310]},
                  {name: '宠物',visible:true,data: [110, 130, 150,170,190,210,230,250,270,290,310,330]},
                  {name: '猫狗',visible:true,data: [120, 140,160,180,200,220,240,260,280,300,320,340]}];*/
	var dataval = $("#data_result").text();
    //dataval = JSON.parse(dataval);
    dataval = eval("("+dataval+")");
    var series = [{name: dataval.x_name,visible:true,data: dataval.x_data}];
    var x_categ = dataval.x_categ;
    
    // 创建展示图表
    high_chart = new Highcharts.Chart({
    //$('#container').highcharts({                   //图表展示容器,与div的id保持一致
        chart: {
        	renderTo: 'container',
            type: 'column',                         //指定图表的类型,默认是折线图(line)
            //inverted: true							//横纵坐标
        },
        title: {
            text: dataval.title_name      //指定图表标题
        },
        xAxis: {
            //categories: dataval.x_key,   //指定x轴分组
            /*formatter: function () {
            	//获取到刻度值
            	var labelVal = this.value;
            	//实际返回的刻度值
            	var reallyVal = labelVal;
            	//判断刻度值的长度
            	if(labelVal.length > 5){
            		//截取刻度值
            		reallyVal = labelVal.substr(0,5);
            	}
            	return reallyVal;
            }*/
        },
        yAxis: {
            title: {
                text: dataval.y_name                  //指定y轴的标题
            }
        },
        credits:{
            enabled:false
        },
        plotOptions: {
            series: {
                cursor: 'pointer',
                events: {
                    click: function (e) { //给series绑定click事件
                    	$("#chartsobj_detail").hide("slide");
						$(".goods_detail table tr").eq(2).html("");
                    	write_content(e.point.category,dataval);
                    }
                }
            }
        },
        series: series,
        /*series: [{                               //指定数据列
            name: 'Jane',                          //数据列名
            data: [1, 0, 4],                       //数据
            visible: true						   //是否显示
        }, {
            name: 'John',
            data: [5, 7, 3]
        }]*/
        tooltip: {
            /*headerFormat: '<span style="font-size:10px" class="pointkey">{point.key}</span><table>',
            pointFormat: '<tr><td style="color:{series.color};padding:0">{series.name}: </td>' +
                '<td style="padding:0"><b>{point.y:.2f}万元</b></td></tr>',
            footerFormat: '</table>',*/
        	formatter: function() {
        		var type = "";
        		if ($("#charts_y").val() == "goods_sales_cash"){
        			type = "元";
        		}
        		else if ($("#charts_y").val() == "goods_sales_num"){
        			type = "件";
        		}
        		else if ($("#charts_y").val() == "goods_order_num"){
        			type = "笔";
        		}
        		//当鼠标悬置数据点时的格式化提示
        		return '<span style="font-size:10px" class="pointkey">'+dataval.x_categ[this.x]+'</span><table>'+
        		'<tr><td style="color:'+this.color+';padding:0">'+dataval.y_name+': </td>' +
                '<td style="padding:0"><b>'+this.y+type+'</b></td></tr>'+'</table><span style="color:red;">点击可查看详细信息</span>';
        	},
            shared: true,
            useHTML: true
        }
    });
}
备注:代码创建的图形是柱状图,之前看中文文档后开始coding,遇到过3个地方的问题没有马上找到解决方案。

1.重写鼠标悬置柱状图时的提示框内容,不知道应该将处理方法放在哪里。后来询问群里朋友后,获知可以写在tooltip的formatter里,函数返回的内容就是提示框里的html代码。

2.点击柱状图时,展示该柱状图代表数据的详细信息,不清楚的也是不知道应该怎么绑定元素。之后也是通过询问群里的朋友找到的解决方法,写在plotOptions下面的event里的click里面,即为对应处理点击事件。

3.点击柱状图展示详细数据,想要获取柱状图对应的x轴数据以期获得数组对应key时。直接用this.x在浏览器兼容性上没有完美匹配,然后通过获取触发事件对象属性e.point.category来取值。

4.在后台拼接图形显示需要用到的数据时,需要特别注意两个问题:a.数据结构必须保证规范(主要是数组和对象) b.展示的详细数据data必须是数值型的,不能为字符串,否则会显示成undefined。

总结:用新东西遇到问题,又不是很清楚怎么在谷歌百度里描述的时候,可以尝试加个技术群,和群里的朋友直接交流的。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值