数据可视化课程整理与心得(1)

零、tomcat前端

1.下载tomcat→https://tomcat.apache.org/
2.启动组件

默认路径C:\Program Files\Apache Software Foundation\Tomcat 10.0\bin
在这里插入图片描述
网页文件一般在webapps文件夹里,可以用Notepad++进行编写,编写完后可以在浏览器上输入本机地址/文件名/html文件名看出成果,比如我的一个作业是 http://127.0.0.1:8080/dataviz2021/graph.html
dataviz2021是webapps下我创建的文件夹,对graph.html进行代码编写。

后面还会有更好用的前后端工具。

一、基于D3的直方图、饼图的绘制(施工)

二、基本力导向与基于Path的力导向(施工)

三、 基于D3的词云图

1.D3.JS词云图

在这里插入图片描述
https://www.jasondavies.com/wordcloud/

2.必要准备:下载d3.layout.cloud.js包

下载地址:link
包在build文件里,用的时候将其复制粘贴在网页文档同文件夹下。
在这里插入图片描述

在进行代码编写的时候必须先加载本地d3.v3.min.js包,然后加载d3.layout.cloud.js包。
如果前者是以网络形式加载的↓

<script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script>

这种情况下再加载本地d3.layout.cloud.js包会报错
正确写法↓

	<script src="d3.v3.min.js" charset="utf-8"></script>
	<script src="d3.layout.cloud.js"></script>

也可以两个都网络形式挂载,但好像要科学上网,而且会比较慢。

3.词云图布局
var wc=d3.layout.cloud()
				  .size([1000, 600])
				  .words(words)
				  .padding(5)
				  .rotate(function() { return ~~(Math.random() * 2) * 90; })
				  .font("Impact")
				  .fontSize(function(d) { return d.size; })
				  .on("end", draw)
				  .start();

各配置项的信息可以看→link.

function draw(words) {
			d3.select("body").append("svg")
				.attr("width", 1000)
				.attr("height",500)
			  .append("g")
				.attr("transform", "translate(300,200)")
			  .selectAll("text")
				.data(words)
			  .enter().append("text")
				.style("font-size", function(d) { return d.size + "px"; })
				.style("font-family", "Impact")
				.style("fill", function(d, i) { return fill(i); })
				.attr("text-anchor", "middle")
				.attr("transform", function(d) {
				  return "translate(" + [d.x, d.y] + ")rotate(" + d.rotate + ")";
				})
				.text(function(d) { return d.text; });
		  }

四、 地图可视化

1.GeoJSON

GeoJSON:将JSON的格式应用于地理上的文件
在这里插入图片描述
地图一定要注意政治因素,敏感地区与主权相关问题一定要谨慎!!!

原理是球形墨卡托投影,这个亚子↓
https://hujiulong.github.io/what-is-the-mercator-projection/

2.地图载入

基于原理首先要对地图进行投影

//定义地图的投影
			var projection = d3.geo.mercator()
								   .center([107, 36])
								   .scale(5000)
								   .translate([width/2, height/2]);//定义地形路径生成器
			var path = d3.geo.path()
						 .projection(projection);	//设定投影

以中国地图为例,请求china.geojson

//请求china.geojson
			d3.json("China.geojson", function(error, root) {
				if (error) 
					return console.error(error);
				console.log(root);

				var groups = svg.append("g");
					
				groups.selectAll("path")
						.data(root.features)
						.enter()
						.append("path")
						.attr("class","province")//划分好省界线
						.style("fill", function(d,i){
							return color(i);//五颜六色
						})
						.attr("d", path );	//使用路径生成器
					
			});

其中省界线的设置在style中

.province {
				stroke: black;
				stroke-width: 1px;
			}

在这里插入图片描述

绘制中国地图相关的可视化一定不要忘记南海!!!
在这里插入图片描述

//请求southchinasea.svg
			d3.xml("southchinasea.svg", function(error, xmlDocument) {
				svg.html(function(d){
					return d3.select(this).html() + xmlDocument.getElementsByTagName("g")[0].outerHTML;
				});			
				d3.select("#southchinasea")
					.attr("transform","translate(840,380)scale(0.5)")
					.attr("class","southchinasea");
			});

可以在style中对南海地区的svg进行修改,

.southchinasea {
				stroke: black;//绘点颜色
				stroke-width: 1px;//绘点大小
				fill: #F0FFFF;//阴影部分的颜色
			}
3.润色

比如可以把地名标注上

var texts = svg.selectAll(".texts")															
								.data(root.features)								
								.enter()
								.append("text")
								.attr("class", "texts")	
								.text(function(d){return d.properties.name;})
								.attr("transform", function(d) {
									var centroid = path.centroid(d),
										x = centroid[0],
										y = centroid[1];
								    if((d.properties.name=="河北")||(d.properties.name=="澳门")||(d.properties.name=="安徽"))//边界冲突的美化处理
											y=y+25;
									return "translate(" + x + ", " + y + ")";
								})
								.attr('fill','green')
								.attr("font-size","12px");
			});		

同样可以导入其他geojson进行d3可视化,添加配色和交互。

五、交互与动画

1.提示框
var tooltip = d3.select("body")
				.append("div")
			    .attr("class","tooltip")
				.style("opacity",0.0);

需要在style里定义好tooltip的形式

<style>
			 .tooltip{
				 font-family: simsun; 
				 font-size: 14px;
				 width: 120;
				 height: auto;
				 position: absolute;
				 text-align: center;
				 border-style: solid; 
				 border-width: 1px;
				 background-color: white;
				 border-radius: 5px;
			  }
		</style>

可以结合互动套入.on()中

.on("mouseover",function(d,i){
					 	tooltip.html("Rating:"+(rate[i]/10000)+"%")
                               .style("left",(d3.event.pageX)+"px")  
                               .style("top",(d3.event.pageY+20)+"px")  
                               .style("opacity",1.0);  	
						})
.on("mousemove",function(d){            
						tooltip.style("left",(d3.event.pageX)+"px")  
                               .style("top",(d3.event.pageY+20)+"px");
                        })          
.on("mouseout",function(d,i){
						tooltip.style("opacity",0.0); 
						})
2.触摸变色

实际上就是用.on()函数监听事件,mouseover时变色,mouseout时变回

.on("mouseover",function(d,i){
							d3.select(this)
							  .attr("fill","gray");//元素变为灰色
						})
						       
.on("mouseout",function(d,i){
							d3.select(this)
							  .attr("fill",color(rate[i]));//颜色变回设定好的颜色
						})
3.动画(施工)
.transition()
.duration(500)
.ease("linear")

六、JSP链接数据库(施工)

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个可能的数据可视化课程设计模板: 1. 课程概述 - 课程介绍:介绍课程目标、内容、教学方法和评估方式等。 - 数据可视化概述:介绍数据可视化的定义、作用、分类以及常用的图表类型等。 2. 数据可视化的基本技能 - 数据准备:介绍如何进行数据清洗和预处理,以及如何从数据中提取有用的信息。 - 数据可视化工具使用:介绍如何使用数据可视化工具进行数据分析和可视化,比如Excel、Tableau、Python等工具的使用。 - 数据可视化原则:介绍数据可视化的基本原则,如数据精确性、清晰性、简洁性等。 3. 数据可视化的高级技能 - 高级图表类型:介绍更复杂的图表类型,如热力图、流程图、树状图等。 - 交互式可视化:介绍如何创建交互式可视化,使用户能够与数据进行互动。 - 数据挖掘和机器学习:介绍如何使用数据挖掘和机器学习技术进行数据分析和可视化。 4. 数据可视化的应用 - 商业分析:介绍如何使用数据可视化进行商业分析,如销售分析、市场调研等。 - 数据科学:介绍如何使用数据可视化进行数据科学研究,如数据挖掘、数据可视化等。 - 其他应用场景:介绍其他领域的数据可视化应用,如医疗、政策研究等。 5. 课程总结和展望 - 课程总结:总结课程的内容和收获,回顾学习过程和成果。 - 展望未来:展望数据可视化的发展趋势,如人工智能、虚拟现实等,以及如何进一步提升数据可视化的应用水平。 希望这个模板能够给你提供一些参考和启示!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值