Highcharts开发图表

1.折线图

显示一个静态的折线图,显示如下数据

星期 温度
周一 9~14
周二 4~10
周三 1~7
周四 4~9
周五 5~11
周六 8~13
周天 7~10

新建demo1.html

<html>
<title>demo1</title>
	<head>
		<script src="js/jquery-2.1.1.min.js"></script>
		<script src="js/highcharts.js"></script>
		<script type="text/javascript">
			$(function(){
				$("#container").highcharts({
					title: {
						text: '最近一周气温'
					},
					xAxis: {
						categories: ['周一','周二','周三','周四','周五','周六','周天']
					},
					yAxis: {
						title: {
							text: '温度(°C)'
						}
					},
					series: [
						{
							name: '最高气温',
							data: [14,10,7,9,11,13,10]
						},
						{
							name: '最低气温',
							data: [9,4,1,4,5,8,7]
						}
					]
				});
			});
		</script>
	</head>
	<body>
		<h1>案例1</h1>
		<div id="container"></div>
	</body>
</html>

运行结果

2. 直方图

将上案例改成直方图,并在每个方块上线上温度值。

<html>
<title>2-柱状图</title>
	<head>
		<script src="js/jquery-2.1.1.min.js"></script>
		<script src="js/highcharts.js"></script>
		<script type="text/javascript">
			$(function(){
				$("#container").highcharts({
					chart: {
						type: 'column'
					},
					title: {
						text: '最近一周气温'
					},
					xAxis: {
						categories: ['周一','周二','周三','周四','周五','周六','周天']
					},
					yAxis: {
						title: {
							text: '温度(°C)'
						}
					},
					plotOptions: {
						series: {
							dataLabels: {
								enabled: true,
								rotation: -90,
								format: '{y}°C',
								color: '#FFFFFF',
								x: 0,
								y: 20,
								style: {
									fontSize: '13px',
									fontFamily: 'Verdana, sans-serif',
									textShadow: '0 0 3px black'
								}
							}
						}
					},
					series: [
						{
							name: '最高气温',
							data: [14,10,7,9,11,13,10],
							dataLabels: {
								color: 'red' // 指定特定的属性
							}
						},
						{
							name: '最低气温',
							data: [9,4,1,4,5,8,7]
						}
					]
				});
			});
		</script>
	</head>
	<body>
		<h1>案例2</h1>
		<div id="container"></div>
	</body>
</html>

运行结果

3.曲线图

在第一个案例中进行修改,不显示版权信息,并将折线图更改为曲线图。

<html>
<title>3-曲线图</title>
	<head>
		<script src="js/jquery-2.1.1.min.js"></script>
		<script src="js/highcharts.js"></script>
		<script type="text/javascript">
			$(function(){
				// 当前页面全局有效
				Highcharts.setOptions({
					credits: {
						enabled: false, // false就是不显示
						text: '北风网',
						href: 'http://www.beifeng.com'
					}
				});
				$("#container").highcharts({
					chart: {
						type: 'spline'
					},
					title: {
						text: '最近一周气温'
					},
					xAxis: {
						categories: ['周一','周二','周三','周四','周五','周六','周天']
					},
					yAxis: {
						title: {
							text: '温度(°C)'
						}
					},
					// 不显示版权信息的一种方式
					/* credits: {
						enabled: false
					},*/
					series: [
						{
							name: '最高气温',
							data: [14,10,7,9,11,13,10]
						},
						{
							name: '最低气温',
							data: [9,4,1,4,5,8,7]
						}
					]
				});
			});
		</script>
	</head>
	<body>
		<h1>案例2</h1>
		<div id="container"></div>
	</body>
</html>

运行结果

4.带辅助线的曲线图

在第三个案例中进行修改,进行辅助线的显示、定制legend(图例)、Tooltip(数据显示框)以及数据输出(中文)。要求当鼠标移动到对应节点的时候,显示辅助线,另外要求分别显示平均最高气温和最低气温的辅助线;要求legend显示在覆盖图表,并显示在左上角;要求数据提示框同时显示最高温度和最低温度。

<html>
<title>4-曲线图</title>
	<head>
		<script src="js/jquery-2.1.1.min.js"></script>
		<script src="js/highcharts.js"></script>
		<script src="js/exporting.js"></script>
		<script type="text/javascript">
			$(function(){
				// 当前页面全局有效
				Highcharts.setOptions({
					credits: {
						enabled: false, // false就是不显示
					},
					lang: {
						printChart: '打印',
						downloadPNG: '下载PNG',
						downloadJPEG: '下载JPEG',
						downloadPDF: '下载PDF',
						downloadSVG: '下载SVG',
						contextButtonTitle: '下载'
					},
					// 颜色控制
					colors: ['#ff7f50', '#6AF9C4', '#87cefa', '#da70d6', '#FFF263',
	          '#32cd32', '#6495ed', '#ff69b4', '#FF9655', '#ba55d3',
	          '#cd5c5c', '#ffa500', '#40e0d0', '#64E572', '#1e90ff',
	          '#ff6347', '#7b68ee', '#00fa9a', '#ffd700', '#6b8e23',
	          '#24CBE5', '#ff00ff', '#3cb371', '#b8860b', '#30e0e0',
	          '#058DC7', '#50B432', '#ED561B', '#DDDF00']
				});
				
				
				$("#container").highcharts({
					chart: {
						type: 'spline'
					},
					title: {
						text: '最近一周气温'
					},
					legend: {
						floating: true,
						align: 'left',
						verticalAlign: 'top',
						layout: 'vertical',
						x: 50,
						y: 40
					},
					xAxis: {
						categories: ['周一','周二','周三','周四','周五','周六','周天']
					},
					yAxis: {
						title: {
							text: '温度(°C)'
						},
						plotLines: [
							{
								id: 'max_t_line',
								color: '#ff7f50',
								width: 1,
								value: 10.6,
								dashStyle: 'dash',
								label: {
									text: '平均最高温度10.6°C',
									align: 'left',
									x: -5,
									y: -10,
									style: {
										fontWeight: 'bold',
										color: '#ff7f50'
									}
								}
							},
							{
								id: 'min_t_line',
								color: '#6AF9C4',
								width: 1,
								value: 5.5,
								dashStyle: 'dash',
								label: {
									text: '平均最低温度5.5°C',
									align: 'left',
									x: -5,
									y: -10,
									style: {
										fontWeight: 'bold',
										color: '#6AF9C4'
									}
								}
							}
						]
					},
					plotOptions: {
						series: {
							point: {
								events: {
									mouseOver: function() {
										var line_id = 'current_x_line';
										this.series.xAxis.removePlotLine(line_id);
										this.series.xAxis.addPlotLine({
											id: line_id,
											value: this.x,
											width: 2,
											color: '#ffe4b5'
										});
									}
								}
							}
						}
					},
					series: [
						{
							name: '最高气温',
							data: [14,10,7,9,11,13,10]
						},
						{
							name: '最低气温',
							data: [9,4,1,4,5,8,7]
						}
					],
					tooltip: {
						borderColor: '#EBBA95',
						borderWidth: 2,
						borderRadius: 20,
						shared: true,
						formatter: function() {
							//console.log(this);
							var s = '<b>' + this.x + '</b>';
							var sum = 0;
							$.each(this.points, function(){
								s += '<br/>' + this.series.name + ': ' + this.y + '°C';
								sum += this.y;
							});
							s += '<br/>平均温度: ' + (sum / 2.0) + '°C';
							return s;
						}
					}
				});
			});
		</script>
	</head>
	<body>
		<h1>案例4</h1>
		<div id="container"></div>
	</body>
</html>

运行结果

5.饼图

显示一个饼图,要求显示如下的浏览器用户数据

浏览器 用户
Chrome: 1086
IE: 675
Firefox: 201
Safari: 124
Opera: 100
Others: 408
<html>
	<head>
		<script src="js/jquery-2.1.1.min.js"></script>
		<script src="js/highcharts.js"></script>
		<script type="text/javascript">
			$(function(){
				// 进行加载
				var charts = new Highcharts.Chart({
					chart : {
						renderTo : 'container',
						type: 'pie'
					},
					title: {
						text: '浏览器使用情况'
					},
					tooltip: {
						pointFormat: '{series.name}:<b>{point.percentage:0.01f}%</b>({point.y})'
					},
					series: [{
						name: '浏览器访问量',
						data: [
							{
								name: 'Chrome',
								y: 1086
							},
							{
								name: 'IE',
								y: 675
							},
							{
								name: 'Firefox',
								y: 201
							},
							{
								name: 'Safari',
								y: 124
							},
							['Opera', 100],
							['Others', 408]
						]
					}]
				}); 
			});
		</script>
		<title>案例5</title>
	</head>
	<body>
		<h1>案例5:浏览器使用情况(饼图)</h1>
		<div id="container"></div>
	</body>
</html>

运行结果

6.饼图带详细

在第5个案例的基础上,要求点击某个浏览器扇形后,在另外一个容器中显示该浏览器具体的用户使用数据

浏览器 版本 用户
Chrome浏览器 chrome_v1: 800
Chrome浏览器 chrome_v2: 200
Chrome浏览器 chrome_v3: 86
IE浏览器 IE_v1: 300
IE浏览器 IE_v2: 150
IE浏览器 IE_v3: 200
IE浏览器 IE_v4: 25
Firefox浏览器 Firefox_v1: 150
Firefox浏览器 other: 51
Safari浏览器 Safari_v1: 50
Safari浏览器 Safari_v2: 70
Safari浏览器 unknow: 4
Opera浏览器 Opera: 98
Opera浏览器 unknow: 2
Others浏览器 Others: 408
<html>
	<head>
		<script src="js/jquery-2.1.1.min.js"></script>
		<script src="js/highcharts.js"></script>
		<script type="text/javascript">
			$(function(){
				function showBrowserInfos(name) {
					var datas = {
						'Chrome': {name: 'Chrome浏览器访问量', data: [['chrome_v1', 800],['chrome_v2', 200],['chrome_v3',86]]},
						'IE': {name: "IE浏览器访问量", data: [['IE_v1', 300],['IE_v2', 150],['IE_v3', 200],['IE_v4', 25]]},
						'Firefox': {name: 'Firefox浏览器访问量', data: [['Firefox_v1', 150], ['other', 51]]},
						'Safari': {name: 'Safari浏览器访问量', data: [['Safari_v1', 50],['Safari_v2', 70], ['unknow', 4]]},
						'Opera': {name: 'Opera浏览器访问量', data: [['Opera', 98],['unknow', 2]]},
						'Others': {name: '其他浏览器访问量', data: [['Others', 408]]}
					};
					var chart = new Highcharts.Chart({
						chart: {
							type: 'pie',
							renderTo: 'containerInfos'
						},
						title: {
							text: name + '浏览器使用详情'
						},
						series: []
					});
					chart.addSeries(datas[name]);
				}
				
				Highcharts.setOptions({
					tooltip: {
						pointFormat: '{series.name}:<b>{point.percentage:0.01f}%</b>({point.y})'
					},
				});
				// 进行加载
				var charts = new Highcharts.Chart({
					chart : {
						renderTo : 'container',
						type: 'pie'
					},
					title: {
						text: '浏览器使用情况'
					},
					plotOptions: {
						pie: {
							allowPointSelect: true,
							point: {
								events: {
									click: function() {
										var name = this.name;
										showBrowserInfos(name);
									}
								}
							}
						}
					},
					series: [{
						name: '浏览器访问量',
						data: [
							{
								name: 'Chrome',
								y: 1086
							},
							{
								name: 'IE',
								y: 675
							},
							{
								name: 'Firefox',
								y: 201
							},
							{
								name: 'Safari',
								y: 124
							},
							['Opera', 100],
							['Others', 408]
						]
					}]
				}); 
			});
		</script>
		<title>案例6</title>
	</head>
	<body>
		<h1>案例6:浏览器使用情况(饼图)</h1>
		<div id="container"></div>
		<div id="containerInfos"></div>
	</body>
</html>

  1. 中国各省份用户ip访问量的展示图
{
  "data": [
    {
      "province": "浙江省",
      "user": 275
    },
    {
      "province": "河南省",
      "user": 373
    },
    {
      "province": "河北省",
      "user": 427
    },
    {
      "province": "江西省",
      "user": 238
    },
    {
      "province": "江苏省",
      "user": 240
    },
    {
      "province": "新疆",
      "user": 20
    },
    {
      "province": "广西省",
      "user": 252
    },
    {
      "province": "广东省",
      "user": 415
    },
    {
      "province": "山西省",
      "user": 237
    },
    {
      "province": "山东省",
      "user": 659
    },
    {
      "province": "安徽省",
      "user": 447
    },
    {
      "province": "宁夏",
      "user": 11
    },
    {
      "province": "天津市",
      "user": 458
    },
    {
      "province": "四川省",
      "user": 137
    },
    {
      "province": "吉林省",
      "user": 171
    },
    {
      "province": "台湾",
      "user": 3
    },
    {
      "province": "北京市",
      "user": 224
    },
    {
      "province": "内蒙古",
      "user": 69
    },
    {
      "province": "云南省",
      "user": 203
    },
    {
      "province": "黑龙江省",
      "user": 227
    },
    {
      "province": "上海市",
      "user": 891
    },
    {
      "province": "香港",
      "user": 62
    },
    {
      "province": "青海省",
      "user": 15
    },
    {
      "province": "陕西省",
      "user": 312
    },
    {
      "province": "重庆市",
      "user": 274
    },
    {
      "province": "辽宁省",
      "user": 367
    },
    {
      "province": "贵州省",
      "user": 100
    },
    {
      "province": "西藏",
      "user": 1
    },
    {
      "province": "福建省",
      "user": 582
    },
    {
      "province": "甘肃省",
      "user": 80
    },
    {
      "province": "澳门",
      "user": 3
    },
    {
      "province": "湖南省",
      "user": 450
    },
    {
      "province": "湖北省",
      "user": 386
    },
    {
      "province": "海南省",
      "user": 93
    }
  ]
}
<html>
	<head>
		<script src="js/jquery-2.1.1.min.js"></script>
		<script src="js/highmaps.js"></script>
		<script src="js/cn-all.js"></script>
		<script type="text/javascript">
			String.prototype.startWith=function(str){
				if(str==null||str==""||this.length==0||str.length>this.length)
					return false;
				if(this.substr(0,str.length)==str)
					return true;
				else
					return false;
				return true;
			};

			var provinceMap = {
				"上海":["上海市", "cn-sh"],
				"云南": ["云南省", "cn-yn"], 
				"内蒙古": ["内蒙古自治区", "cn-nm"],
				"吉林": ["吉林省", "cn-jl"], 
				"四川": ["四川省", "cn-sc"], 
				"天津": ["天津市", "cn-tj"], 
				"宁夏": ["宁夏回族自治区", "cn-nx"], 
				"安徽": ["安徽省", "cn-ah"],
				"山东": ["山东省", "cn-sd"],
				"山西": ["山西省", "cn-sx"],
				"陕西": ["陕西省", "cn-sa"],
				"广东": ["广东省", "cn-gd"],
				"广西": ["广西省", "cn-gx"],
				"新疆": ["新疆维吾尔自治区", "cn-xj"],
				"江苏": ["江苏省", "cn-js"],
				"江西": ["江西省", "cn-jx"],
				"河北": ["河北省", "cn-hb"],
				"河南": ["河南省", "cn-he"],
				"浙江": ["浙江省", "cn-zj"],
				"海南": ["海南省", "cn-ha"],
				"湖北": ["湖北省", "cn-hu"],
				"湖南": ["湖南省", "cn-hn"],
				"甘肃": ["甘肃省", "cn-gs"],
				"福建": ["福建省", "cn-fj"],
				"西藏": ["西藏自治区", "cn-xz"],
				"贵州": ["贵州省", "cn-gz"],
				"辽宁": ["辽宁省", "cn-ln"],
				"重庆": ["重庆市", "cn-cq"],
				"青海": ["青海省", "cn-qh"],
				"黑龙江": ["黑龙江省", "cn-hl"],
				"北京": ["北京市", "cn-bj"]
			};

			function cnprovincenameformatted(province) {
				for (var p in provinceMap) {
					if (province.startWith(p)) {
						return provinceMap[p];
					}
				}
				return null;
			}
			
			
			$(function(){
				var visitProvinceData = "{'data':[{'province':'浙江省','user':275},{'province':'河南省','user':373},{'province':'河北省','user':427},{'province':'江西省','user':238},{'province':'江苏省','user':240},{'province':'新疆','user':20},{'province':'广西省','user':252},{'province':'广东省','user':415},{'province':'山西省','user':237},{'province':'山东省','user':659},{'province':'安徽省','user':447},{'province':'宁夏','user':11},{'province':'天津市','user':458},{'province':'四川省','user':137},{'province':'吉林省','user':171},{'province':'台湾','user':3},{'province':'北京市','user':224},{'province':'内蒙古','user':69},{'province':'云南省','user':203},{'province':'黑龙江省','user':227},{'province':'上海市','user':891},{'province':'香港','user':62},{'province':'青海省','user':15},{'province':'陕西省','user':312},{'province':'重庆市','user':274},{'province':'辽宁省','user':367},{'province':'贵州省','user':100},{'province':'西藏','user':1},{'province':'福建省','user':582},{'province':'甘肃省','user':80},{'province':'澳门','user':3},{'province':'湖南省','user':450},{'province':'湖北省','user':386},{'province':'海南省','user':93}]}";
				var data = [];
				$.each(eval("(" + visitProvinceData + ")").data, function(i, item){
					var province = cnprovincenameformatted(item.province);
					if (province) {
						var cnname = province[0];
						var hckey = province[1];
						var value = item.user;
						data.push({"hc-key":hckey, value: value, "cn-name": cnname});
					}
				});
				// 进行加载
				$("#container").highcharts('Map', {
					mapNavigation: {
						enabled: true,
						buttonOptions: {
							verticalAlign: 'bottom'
						}
					},
					tooltip: {
						pointFormat: '{point.cn-name}:<b>{point.value}</b>'
					},
					colorAxis: {
						min: 0,
						minColor: '#EEEEFF',
						maxColor: '#000022',
						stops: [
							[0, '#EEEEFF'],
							[0.67, '#4444FF'],
							[1, '#000022']
						]
					},
					series:[{
						name: '中国各省份访问量图',
						data: data,
						mapData: Highcharts.maps["countries/cn/cn-all"],
						joinBy: 'hc-key',
						dataLabels: {
							enabled: true,
							format: '{point.cn-name}'
						}
					}]
				});
			});
		</script>
		<title>案例7</title>
	</head>
	<body>
		<h1>案例7:地址使用</h1>
		<!-- 进行大小控制,默认是400高度-->
		<div id="container" style='height:600px'></div>
	</body>
</html>

posted @ 2018-05-15 21:22  一粒飞鸿  阅读(537)  评论(0编辑  收藏  举报