d3可视化Airline Routes(条形图)

Airline routes visualization

 

1.数据

 

2.任务描述

显示不同的航空公司的航线数量

首先要对数据,所有的航线的数量按其航线公司进行一个聚合。用一个条形图将所有的航线的数量分割到不同的航空公司。

 

3.效果图

4.代码

我的代码有点呆,多的就不谈了

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style>
		body{
			font-family:Helvetica;
		}
		svg {
			width: 500px;
			height: 500px;

		}
		.top-label{
			font-size: 13px;
			font-style: italic;
			text-transform: uppercase;
	
		}
		.name-label{
			text-align: right;
			font-weight: bold;
			width: 90px;
			padding-right: 10px;
		}
		.clearfix{
			clear: box;
		}
		.bar{
			fill:DarkSlateBlue;
		}
		.bar-label{
			text-anchor: end;
		}
		.axis-label{
			text-anchor: middle;
			font-size: 13px;
		}
		.x.axis line{
			fill:none;stroke: #000;
		}
		.x.axis text{
			font-size: 13px;
		}
		.axis path{
			display: none;
		}
		.y.axis line{
			display: none;
		}
	</style>
</head>
<body>
	<script type="text/javascript" src="d3.v3.js">//我把d3源文件放在同个文件夹下了
 	</script> 
 	<script>

 			var airnames = new Array("Air Berlin","Air Canada","Air China","Air France","AirTran Airways","Alitalia","American Airlines","China Eastern Airlines","China Southern Airlines","Delta Air Lines","easyJet","Iberia Airlines","KLM Royal Dutch Airlines","Lufthansa","Ryanair","Shenzhen Airlines","Southwest Airlines","Turkish Airlines","US Airways")
			console.log(typeof(airnames));
    	 	var popData=[
    	 	{name:"",value:0},
    	 	{name:"",value:0},
    	 	{name:"",value:0},
    	 	{name:"",value:0},
    	 	{name:"",value:0},
    	 	{name:"",value:0},
    	 	{name:"",value:0},
    	 	{name:"",value:0},
    	 	{name:"",value:0},
    	 	{name:"",value:0},
    	 	{name:"",value:0},
    	 	{name:"",value:0},
    	 	{name:"",value:0},
    	 	{name:"",value:0},
    	 	{name:"",value:0},
    	 	{name:"",value:0},
    	 	{name:"",value:0},
    	 	{name:"",value:0},
    	 	{name:"",value:0}
    	 	];
    	 	for (var i=0;i<airnames.length;i++)
    	 	{
    	 		popData[i].name=airnames[i];
    	 	}
    	    d3.csv('Airlines Routes.csv',function(error,data){
   			for(var i=0;i<airnames.length;i++)
   			{
   				popData[i].value=data.filter(function(element){return element.AirlineName==airnames[i]}).length;

   			}

    	
    		console.log(popData);

    		//异步调用所以必须放在里面
	    	var margin={top:30,right:0,bottom:0,left:100},
	 		width=500-margin.left-margin.left,
	 		height=450-margin.top-margin.bottom;

	 		var x=d3.scale.linear()
	 		.domain([0,d3.max(popData,function(element){return element.value;})])
	 		.range ([0,width]);

	 		var y=d3.scale.ordinal()
	 		.domain(popData.map(function(element){return element.name}))
	 		.rangeBands([0,height],0.2,0);

	 		var xAxis=d3.svg.axis()
	 		.scale(x)
	 		.orient("top")
	 		.ticks(5);

	 		var yAxis=d3.svg.axis()
	 		.scale(y)
	 		.orient("left");

	 		var body=d3.select("body");

	 		body.append("h2")
	 		.text("The total number of airline routes");

	 		body.append("div")
	 		.attr("class","top-label name-label")
	 		.append("p")
	 		.text("AirlineName");

	 		body.append("div")
	 		.attr("class","top-label")
	 		.append("p")
	 		.text("number of airline routes");

	 		body.append("div")
	 		.attr ("class","clearfix");
	         

	 		var svg=body.append("svg")
	 		.attr("width",width+margin.left+margin.right)
	 		.attr("height",height+margin.top+margin.bottom)
	 		.append("g")
	 		.attr("transform","translate("+margin.left+
	 			","+margin.top+")");

	 		var barGroup=svg.append("g")
	 		.attr("class","bar");  

	 		barGroup.selectAll("rect")
	 		.data(popData)
	 		.enter().append("rect")
	 		.attr("x",0)
	 		.attr("y",function(d){return y(d.name)})
	 		.attr("width",function(d){return x(d.value)})
	 		.attr("height",y.rangeBand());

	 		svg.append("g")
	 		.call(xAxis)
	 		.attr("class","x axis");

	 		svg.append("g")
	 		.call(yAxis)
	 		.attr("class","y axis");


    	});

 		
 		
 		

 	</script> 
</body>
</html>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
文件已上传到百度网盘,附件中是下载地址。真正免积分免费完整版,绝不出现仅下载到部分章节,书中广 告页要求QQ联系支付宝购买完整版的流氓行为! 欢迎免积分下载更多本人独有网上难寻觅的 高清IT电子书:http://download.csdn.net/user/sinophp123 人无我有,人有我优,人优我廉!我的版本是全网最清晰的独家制作版本,还不要资源分。 同样一本书,下我的就可以了! 本人上传资料的原则: (1)如果CSDN和网上其他地方已随处可见高清下载,本人不再上传。 (2)如果网上已有我还上传,那么肯定是经重新制作,如不再缺页,清晰度更高,或者加上书签。 (3)每本书都经过逐页纯手工精心处理,包括清晰度的增强,水印的去除。当然最重要的,是尽量保证有书 签方便您浏览。 (4)如果是中译版,文件名前半部分是英文原版书名,后面是中译版书名。 如:“Implementing.Responsive.Design-响应式Web设计实践”。书名经反复校对绝无一字错漏。 (5)每本pdf书默认都是有书签的。来源不限“某星”网站,还有各大网络书店和出版社官网的页码信息。 凡无书签的pdf文件名均含“_no.bookmark”字样,如“HTML5程序开发范例宝典_no.bookmark”。请不要再 浪费时间去寻找书签,肯定没有,网上别人提供的下载版本也绝对不会有(除非您是出版社内部人员!), 没有人会浪费自己时间逐页输入章节页码来费时费力免费给您制作。 (6)只提供中文书籍,您不用担心下载的是英文原版。 (7)只提供完整版,绝不上传只有部分章节的所谓“迷你书”,“试读版”。 (8)书中绝不含广告页和水印LOGO。 Data.Visualization.with.D3.js.Cookbook-D3.js数据可视化实战手册 [加]nick qi zhu 著(著) | 杨锐 刘夏 王超 张沙沙(译) | 人民邮电出版社 | 9787115360960 | 2014-09- 01

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值