【 D3.js 高级系列 — 6.0 】 值域和颜色

这篇博客介绍了如何使用D3.js根据值域为地图各区域分配颜色,并通过颜色渐变展示数值变化。首先,通过线性比例尺将特定值域映射到[0, 1]范围,然后结合颜色插值函数生成对应的颜色。接着,绘制中国地图,读取TopoJSON文件以提高效率,并为各省市添加基于旅游业发展数据的颜色。此外,还创建了颜色标志帮助用户理解颜色所代表的数值范围。最后展示了实现效果并提供了完整代码链接。" 73176533,1454895,MPEG4标准解读:Advanced Simple Profile详解,"['视频编码', 'MPEG4标准', '流媒体', '视频处理']
摘要由CSDN通过智能技术生成

在【入门 - 第 10 章】作了一张中国地图,其中各省份的颜色值都是随意赋值的。如果要将一些值反映在地图上,可以利用颜色的变化来表示值的变化。

1. 思路

例如,有值域的范围为:

[10, 500]

现希望10用浅绿表示,500用深绿表示,10到500之间的值用浅绿和深绿之间的颜色表示。显然,此处需要一个函数,传入的参数是10到500之间的值,返回值是浅绿到深绿之间的颜色值。

高级 - 第 5.1 章】介绍的颜色插值函数正好可以派上用场。

var palegreen = d3.rgb(66,251,75);	//浅绿
var darkgreen = d3.rgb(2,100,7);		//深绿

var color = d3.interpolate(a,b);		//颜色插值函数

这段代码最后得到的color可作为函数使用,参数的范围为[0, 1],当参数为0时,返回浅绿,当参数为1时,返回深绿。但是,现在的值域是[10, 500],范围不是[0, 1]。因此,先定义一个线性比例尺,将[10, 500]按线性关系映射到[0, 1]。

var linear = d3.scale.linear()
		.domain([10, 500])
		.range([0, 1]);

如此一来,便可结合比例尺来使用颜色插值函数。

color( linear(10) );		//返回浅绿RGB(66,251,75)
color( linear(250) );		//返回浅绿和深绿之间的值
color( linear(500) );		//返回深绿RGB(2,100,7)

2. 绘制完整的中国地图

在【入门 - 第 10 章】有绘制中国地图的方法。

本例中更改为读取 TopoJSON 文件,这种类型的文件更小,能提高读取速度。关于 TopoJSON 和 GeoJSON 的区别,请参见【

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值