利用d3.js绘制中国地图

d3.js是一个比较强的数据可视化js工具。利用它画了一幅中国地图,如下图所示:

源码如下:

<!DOCTYPE html>
<html>
  <head>
    <script type="text/javascript" src="d3.js"></script>
    <script type="text/javascript" src="d3.csv.js"></script>
    <script type="text/javascript" src="d3.geo.js"></script>
    <script type="text/javascript" src="d3.geom.js"></script>
  </head>
  <body>
  <div id=‘map‘></div>

    <script type="text/javascript">

var w = 1280,
    h = 800;

var projection = d3.geo.azimuthal()//  //mercator()
    //.mode("equidistant")
    //.origin([-98, 38])
    //.scale(1400)
    //.translate([640, 360]);
	.mode("equidistant")
    .origin([107, 32])///???
    .scale(1000)
    .translate([w/2, h/2]);

var path = d3.geo.path()
    .projection(projection);

var svg = d3.select("#map").insert("svg:svg")
	//.append(‘svg‘)//
    .attr("width", w)
    .attr("height", h);

var states = svg.append("svg:g")
    .attr("id", "states");

var circles = svg.append("svg:g")
    .attr("id", "circles");

var texts = svg.append("svg:g")
	.attr("id", "texts");

var cells = svg.append("svg:g")
    .attr("id", "cells");

d3.json("china.json", function(collection) {
  states.selectAll("path")
      .data(collection.features)
    .enter().append("svg:path")
      .attr("d", path)
	  .attr(‘fill‘,‘#ddd‘)
	  .attr(‘stroke‘,‘#222‘)
	  .attr(‘stroke-width‘,‘1px‘)
	  ;
});
var positions=[];
d3.csv(‘china-cities.csv‘,function(c){
	circles.selectAll("circle")
        .data(c)
        .enter().append("svg:circle")
        .attr("cx", function(d,i){return projection([d.lon,d.lat])[0];})
        .attr("cy",function(d,i){return projection([d.lon,d.lat])[1];})
		.attr("r", 3)
		.attr(‘fill‘,‘red‘);

	texts.selectAll("text")
		.data(c)
		.enter().append("svg:text")
		.text(function(d){return d.city;})
		.attr("x", function(d){
			var local=projection([d.lon,d.lat]);
			if(d.lon==‘113.5575191‘)//处理澳门
			return (local[0]-30);
			else return local[0];})
        .attr("y",function(d){
			var local=projection([d.lon,d.lat]);
			if(d.lat==‘39.1439299‘) return (local[1]+10);//处理天津
			else return local[1];
			})
		.attr(‘fill‘,‘#000‘)
		.attr(‘font-size‘,‘14px‘)
		;
});

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

利用d3.js绘制中国地图,布布扣,bubuko.com

时间: 2024-08-08 13:59:03

利用d3.js绘制中国地图的相关文章

利用d3.js绘制雷达图

利用d3,js将数据可视化,可以做到数据与代码的分离,方便以后修改数据. 这次利用d3.js绘制了一个五维的雷达图,即将多个对象的五种属性在一张图上对比. 数据写入data.csv.数据类型写入type.csv文件. 效果如下图所示 源码连接:http://download.csdn.net/detail/svap1/7358123 使用是只需调用 radar()函数即可,如下是测试页面代码. <!DOCTYPE html> <html> <head> <meta

Javascript实战开发:教你使用raphael.js绘制中国地图

最近的数据统计项目中要用到中国地图,也就是在地图上动态的显示某个时间段某个省份地区的统计数据,我们不需要flash,仅仅依靠raphael.js以及SVG图像就可以完成地图的交互操作.在本文中,我给大家分享如何使用js来完成地图交互. 先简单介绍下raphael.js,raphael.js是一个很小的javascript库,它可以在网页中实现绘制各种矢量图.各类图表.以及图像裁剪.旋转.运动动画等等功能.此外raphael.js还跨浏览器兼容,而且还兼容老掉牙的IE6啊.raphael.js的官

使用D3.js绘制地图并打点

本篇简单介绍一下使用D3.js绘制地图,并更具经纬度在地图打点.最后根据点生成voronoi图及其三角网. 下载地图geoJson文件 去网上下载要绘制地图的geoJson文件. 使用d3.json()加载地图文件,这里为了方便加载我把geoJson文件放在了js文件里. 绘制地图 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title>

[Echarts可视化] 一.入门篇之简单绘制中国地图和贵州地区

最近发生了很多事情,去到了一个新环境学习.但是不论在哪里,我都需要不忘初心,坚持做自己喜欢的事情,在CSDN写博客.教学.爱娜.生活等等.        这篇文章主要是通过Echarts可视化介绍入门知识.中国地图和贵州地区各省份的数据分析.其中贵州地图才是这篇文章的核心内容.这是一篇入门文章,希望对您有所帮助,如果文章中存在不足之处,还请海涵~        官网地址:http://echarts.baidu.com/index.html 一. 入门介绍-第一张图 强烈推荐大家阅读官网的教程进

matlab利用m_map工具包画中国地图及散点云图

开始之前需要准备好malab,中国地图shp文件,m_map工具包. 中国地图shp文件可以在下面的链接中下载: https://gadm.org/download_country_v3.html 本文借鉴了下面链接中教程,该方法为matlab自带的画图工具包绘制方法,在我电脑上geoshow命令运行时间特别长,不知道为什么,感兴趣的同学可以试试: https://my.oschina.net/chengwei426/blog/674280 利用m_map绘制中国地图,代码如下: close a

Android 绘制中国地图

最近的版本有这样一个需求: 有 3 个要素: 中国地图 高亮省区 中心显示数字 面对这样一个需求,该如何实现呢? 高德地图 因为项目是基于高德地图来做的,所以很自然而然的想到了高德.但是当查阅高德地图相关 Api 后,发现并没有能够实现这样需求的方法,所以只能另寻他法了. 图片叠加 让设计师出图,实现第一个要素开发成本极低.至于高亮省区,也是继续让设计师出图,与全国地图分辨率保持一致,为每个省区设计一张高亮的图,其他地方透明,这样算下来设计师得出 35 张图.若不考虑性能,将图片无脑叠加倒也可以

使用d3.js 绘制交互树

d3.js 中包含了丰富的用于表达树和图的例子: http://d3js.org 以下代码示例中,用于表示交互的树: <!DOCTYPE html> <meta charset="utf-8"> <style> .node { cursor: pointer; } .node circle { fill: #fff; stroke: steelblue; stroke-width: 1.5px; } .node text { font: 10px s

基于D3JS绘制中国地图

仿照D3JS官网上的美国地图制作了一个中国版的地图. D3JS官网上的版本: http://bl.ocks.org/NPashaP/a74faf20b492ad377312 中国版的地图效果: 如要制作其他国家或其他具体省份-市区级的地图,只需替换掉javascript中的SVG地图数据即可.地图上每个省份的统计数据是随机生成的,可根据需求导入实际业务数据. 分享一个SVG地图数据的网站:https://commons.wikimedia.org/wiki/Category:SVG_maps_o

d3.js 绘制北京市地铁线路状况图(部分)

地铁线路图的可视化一直都是路网公司的重点,今天来和大家一起绘制线路图.先上图. 点击线路按钮,显示相应的线路.点击线路图下面的站间按钮(图上未显示),上报站间故障. 首先就是制作json文件,这个文件包括两部分,一部分是站点信息,另一部分就是线路信息,由于时间问题,我只写了5条线路(10号线站点太tm多了): 然后就是构造类文件,不多说: 之后就是主要的操作线路图的逻辑,还画了一个天安门. 好了废话不多说,下面上代码 1.主要代码 <!DOCTYPE html> <html lang=&