javascript框架echarts插件实现超酷人立方效果图

最近由于项目需求,需要做一个类似人立方效果的网络关系效果,在查询许多文档后,发现百度出echarts开源组件非常的适合,而且加载速度很棒,echarts图形主要是使用html5的新特性的做的,使用到了canvas画板等。下面是我自己实现的一些过程和经验,供大家参考。

这里是echarts的网站:http://echarts.baidu.com/doc/example.html

里面有详细的使用流程和例子,只要是稍微懂一些javascript就能看懂。

第一步:

下载echarts的插件: 在项目中导入一下俩个文件

1     esl.js

2     echarts-original.js

3     jquery-1.9.1.min.js   jQuery压缩文件

第二步:

定义一个div容器,用来盛放echarts的图形,必须定义一个id。如下:

<div id="rel" style="height: 500px; margin: 0 auto;"></div>

第三步:

配置相关图形的属性,加载图形到容器中,启动图形。

详细代码如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<title>网络关系图</title>

<script type="text/javascript" src="js/jquery-1.9.1.min.js"></script>
<script type="text/javascript" src="js/echarts/esl.js"></script>
<script type="text/javascript">
	function relativeWord() {

		// 路径配置
		require.config({
			paths : {
				"echarts" : "js/echarts/echarts-original",
				"echarts/chart/force" : "js/echarts/echarts-original"
			}
		});

		// 使用
		require([ "echarts", "echarts/chart/force" ], function(ec) { // 使用力向图模块,按需加载
			// 基于准备好的dom,初始化echarts图表
			var myChart = ec.init(document.getElementById("rel"));

			var option = {
				title : {
					text : "网络关系图",
					subtext : "数据来源andy",
					x : "right",
					y : "bottom",
					padding : [ 10, 30 ]
				},

				dataRange : {
					color : [ '#1178ad', '#72bbd0' ]
				},

				tooltip : {
					trigger : "item",
					formatter : "{a0}:{b0}<br>关系值:{d}",
					borderRadius : 3,
					backgroundColor : "rgba(0,0,0,0.4)",
					padding : 4,
					axisPointer : {
						type : 'none',
						lineStyle : {
							color : '#4b8',
							width : 2,
							type : 'dashed'
						},
						crossStyle : {
							color : '#1e90ff',
							width : 5,
							type : 'dashed'
						},
						shadowStyle : {
							size : 'auto',
							color : 'rgba(150,150,150,0.3)'
						}
					}
				},

				color : [ '#33ff33', '#cc33ff' ],

				legend : {
					data : [ {
						name : "中心词",
						textStyle : {
							color : "#33ff33"
						}
					}, {
						name : "关系词",
						textStyle : {
							color : "#cc33ff"
						}
					} ]
				},

				series : [ {
					type : "force",
					name : "词关系",
					categories : [ {
						name : "中心词",
					}, {

						name : "关系词",

					} ],
					itemStyle : {
						normal : {
							label : {
								show : true,
								textStyle : {
									color : "#FFF",
									fontFamily : "微软雅黑",
									fontSize : 12
								}
							},
							nodeStyle : {
								brushType : "both",
								color : '#333333',
								strokeColor : "rgba(255,215,0,0.4)",
								lineWidth : 10
							},
							linkStyle : {
								strokeColor : "#8cdfc3",
								type : 'dashed',
								lineWidth : 2
							}
						},
						emphasis : {
							label : {
								show : false
							// textStyle: null      // 默认使用全局文本样式,详见TEXTSTYLE
							},
							nodeStyle : {
							//color:"#4B8"
							//r: 30
							},

						}
					},
					useWorker : false,
					minRadius : 25,
					maxRadius : 35,
					gravity : 0.4,
					scaling : 1.5,
					animation : true,
					large : true,
					useWorker : 20,

					linkSymbol : "none",
					nodes : [ {
						"category" : 0,
						"name" : '幸福',
						"value" : 10
					}, {
						"category" : 1,
						"name" : '你',
						"value" : 4
					}, {
						"category" : 1,
						"name" : '我',
						"value" : 5
					}, {
						"category" : 1,
						"name" : '他',
						"value" : 4
					}, {
						"category" : 1,
						"name" : '家',
						"value" : 22
					}, {
						"category" : 1,
						"name" : '微暖',
						"value" : 3
					}, {
						"category" : 1,
						"name" : '爱情',
						"value" : 4
					}, {
						"category" : 1,
						"name" : '友情',
						"value" : 9
					}, {
						"category" : 1,
						"name" : '情亲',
						"value" : 11
					}, {
						"category" : 1,
						"name" : '房子',
						"value" : 14
					}, {
						"category" : 1,
						"name" : '车',
						"value" : 10
					}, {
						"category" : 1,
						"name" : '美满',
						"value" : 11
					}, {
						"category" : 1,
						"name" : '健康',
						"value" : 14
					}, {
						"category" : 1,
						"name" : '事业',
						"value" : 12
					}, {
						"category" : 1,
						"name" : '别墅',
						"value" : 10
					} ],
					links : [ {
						source : '幸福',
						target : '你',
						weight : 2
					}, {
						source : '幸福',
						target : '我',
						weight : 9
					}, {
						source : '幸福',
						target : '他',
						weight : 11
					}, {
						source : '幸福',
						target : '家',
						weight : 2
					}, {
						source : '幸福',
						target : '美满',
						weight : 11
					}, {
						source : '幸福',
						target : '健康',
						weight : 14
					}, {
						source : '幸福',
						target : '事业',
						weight : 12
					}, {
						source : '幸福',
						target : '别墅',
						weight : 10
					}, {
						source : '你',
						target : '车',
						weight : 22
					}, {
						source : '你',
						target : '微暖',
						weight : 10
					}, {
						source : '你',
						target : '房子',
						weight : 8
					}, {
						source : '我',
						target : '情亲',
						weight : 5
					}, {
						source : '房子',
						target : '情亲',
						weight : 10
					}, {
						source : '车',
						target : '家',
						weight : 5
					}, {
						source : '幸福',
						target : '房子',
						weight : 7
					},

					{
						source : '我',
						target : '爱情',
						weight : 9
					}, {
						source : '我',
						target : '友情',
						weight : 7
					},

					]
				} ]
			};
			var ecConfig = require("echarts/config");
			function focus(param) {
				var data = param.data;
				var links = option.series[0].links;
				var nodes = option.series[0].nodes;
				if (data.source !== undefined && data.target !== undefined) { //点击的是边
					var sourceNode = nodes[data.source];
					var targetNode = nodes[data.target];
					console.log("选中了边 " + sourceNode.name + " -> "
							+ targetNode.name + " (" + data.weight + ")");
				} else { // 点击的是点
					console.log("选中了" + data.name + "(" + data.value + ")");
				}
				console.log(param);
			}

			myChart.on(ecConfig.EVENT.CLICK, focus);

			// 为echarts对象加载数据
			myChart.setOption(option);

		});
	}

	relativeWord();
</script>

</head>
<body>
	<div>
		<div style="margin: 20px 0 0 20px; font-size: 14px;">
			<!-- 词网络容器 -->
			<div id="rel" style="height: 500px; margin: 0 auto;"></div>
		</div>

	</div>

</body>
</html>

其效果图入下:

时间: 2024-10-12 13:10:10

javascript框架echarts插件实现超酷人立方效果图的相关文章

18 款超酷的 HTML5 和 JavaScript 游戏引擎库

现在的游戏开发变得越来越复杂,需要制作各种炫丽的效果,还要制作各种基于 2D 或者 3D 的场景.为了节省游戏开发者的时间,让开发者集中精力在游戏的创新上,出现了许许多多的游戏引擎.而现在为了实现跨平台,HTML5 和 JavaScript 成功为了游戏开发者必备的利器,特别是移动端的开发者,必须要能很好的掌握 HTML5 和 JavaScript. 现在这么多的游戏引擎,各有各的优点和缺点,为了帮助开发者们找到属于自己的那款游戏开发引擎,我们综合了许多方面的考虑,选出来以下的 18 个超酷的

使用Javascript来创建一个响应式的超酷360度全景图片查看幻灯效果

360度的全景图片效果常常可以用到给客户做产品展示,今天这里我们推荐一个非常不错的来自Robert Pataki的360全景幻灯实现教程,这里教程中将使用javascript来打造一个超酷的全景幻灯实现,相信大家一定会喜欢的! 在这个教程中没有使用到任何插件,我们将使用HTML,css和javascript来实现,当然,也使用是jQuery这个框架! 如何实现? 我们将使用预先按照360生成的图片进行轮播来实现动画展示效果.包含了180个图片.所以加载时间可能比较长. 代码实现 我们将在css代

jQuery超酷下拉插件6种效果演示

原始的下拉框很丑啦, 给大家一款jQuery超酷下拉插件6种效果 效果预览 下载地址 实例代码 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 <div class="container">                       <section class="main clearfix">                 <select id="cd-dr

Javascript教程:AngularJS的五个超酷特性

AngularJS是一个超棒的javascript框架,不单单对于开发人员来说非常有吸引力,对于UI设计师来说也同样出色.在这篇教程中,我们将简单的介绍AngularJS几个重量级必备特性,并且介绍它如何能够让你的web应用更加强大! AugularJS简单介绍 AngularJS是一个新出现的强大客户端技术,提供给大家的一种开发强大应用的方式.这种方式利用并且扩展HTML,CSS和javascript,并且弥补了它们的一些非常明显的不足.本应该使用HTML来实现而现在由它开发的动态一些内容.

【超酷超实用】CSS3可滑动跳转的分页插件制作教程

原文:[超酷超实用]CSS3可滑动跳转的分页插件制作教程 今天我要向大家分享一款很特别的CSS3分页插件,这款分页插件不仅可以点击分页按钮来实现分页,而且可以滑动滑杆来实现任意页面的跳转,看看都非常酷,很适合一些个性化的个人网站使用,当然,这款分页插件也适合ajax翻页,效果都挺不错的.先来看看效果图: 怎么样,还挺酷的吧. 当然你也可以在这里查看插件的DEMO演示. 接下来我们来分享一下源码的实现思路,这里用到了jQuery UI框架,这么酷的滑杆是靠它实现的,不然,写的累死.. 首先是HTM

超酷消息警告框插件(SweetAlert)

今天给大家推荐一款不错的超酷消息警告框–SweetAlert:SweetAlert是一款不需要jQuery支持的原生js提示框,风格类似bootstrap.它的提示框不仅美丽动人,并且允许自定义,支持设置提示框标题.提示类型.内容展示图片.确认取消按钮文本.点击后回调函数等.和传统的alert相比: SweetAlert 能在页面自动居中,支持桌面环境,移动端和平板,并且高度自定义.接下来看看它的具体使用! HTML 首先引入相应的js和css,该插件不需要jQuery插件的支持: <link

PHP开发者应了解的24个超酷的PHP库(微框架)

PHP开发者应了解的24个超酷的PHP库(微框架) 作为一个PHP开发者,现在是一个令人激动的时刻.每天有许许多多有用的库分发出来,在Github上很容易发现和使用这些库.下面是我曾经遇到过最酷的24个库.你最喜欢的库没有在这个列表里面?那就在评论中分享吧! 1. Dispatch – 微框架 Dispatch是一个PHP小框架.它并没有给你完整的MVC设置,但你可以定义URL规则和方法,以便更好组织应用程序.这对API.简单的站点或原型来说是完美的. [php] view plaincopy

超酷的JavaScript叙事性时间轴(Timeline)类库

在线演示 Timeline 是我见过的最酷的展示事件随时间发展的javascript实现.你可以基于时间使用讲故事的方式来创建时间轴特效,整个时间轴以幻灯的方式来展示,你可以穿插图片,视频或者是网站,而且拥有非常华丽的动画效果和缩略图效果,非常适合做网站的关于我们功能. 主要特性 支持外部社交网站,例如,twitter.com, youtube,flickr,vidmeo,Google Maps 开源免费 文档齐全 使用简单 支持数据格式:JSON,Google Doc,HTML 如何使用 插入

jQuery超酷轻量级响应式lightbox插件

Smoothbox是一款非常实用的超酷jQuery轻量级响应式lightbox插件.该lightbox插件在图片转换时带有平滑的CSS3过渡效果.如果不使用CSS3过渡效果,该插件可以支持到IE8浏览器.它的特点有: 轻量级[1.7Kb] 预加载图片 可以在多个项之间建立画廊 实用CSS3 transitions制作平滑过渡效果 响应式图片设置 效果演示:http://www.htmleaf.com/Demo/201504171697.html 下载地址:http://www.htmleaf.c