javascript - 使用 D3 Scales 将颜色转换为数字
问题描述
和之间的值0 and 1
作为我的输出范围。但是,我不确定要使用哪种类型的比例或如何将方案添加为输入域。
下面的代码与我正在尝试做的相反。
let scaleSequential1 = d3.scaleSequential()
.domain([0, 1])
.interpolator(d3.interpolateViridis);
console.log( scaleSequential1(0) ); //#440154
console.log( scaleSequential1(0.5) ); //#21918c
console.log( scaleSequential1(1) ); //#fde725
解决方案
跟进我的评论,没有直接的方法可以做到这一点。如果你喜欢这个,你可以破解它。如果您要经常调用它,我会用闭包包裹起来以节省.map
...
function invertViridis(color){
return d3.range(0, 1.01, 0.01).map(i => d3.interpolateViridis(i)).indexOf(color) / 100;
}
console.log(invertViridis("#440154"));
console.log(invertViridis("#3b528b"));
console.log(invertViridis("#21918c"));
console.log(invertViridis("#5ec962"));
console.log(invertViridis("#fde725"));
function invertViridisClosure(){
var r = d3.range(0, 1.01, 0.01).map(i => d3.interpolateViridis(i));
return function(color) {
return r.indexOf(color) / 100;
}
}
let f = invertViridisClosure();
console.log(f("#440154"));
console.log(f("#3b528b"));
console.log(f("#21918c"));
console.log(f("#5ec962"));
console.log(f("#fde725"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.7.0/d3.min.js"></script>
推荐阅读
- python - 字节(“s”,“utf-8”)>字节(10000)==真
- java - 从kafka进入elasticsearch的数据滞后
- powershell - 如何将字符串作为非字符串传递给powershell中的命令?
- laravel-5 - Laravel 命令在 AWS EC2 上由 Cron 执行时返回不同的输出
- mysql - 查询获取差异的问题
- postman - 使用 postman 中的 setNextRequest 使用来自 json 的新迭代数据运行下一个请求
- c# - 如何从 Acumatica API 获取客户活动
- python - Python - for 循环的问题(猜颜色 - 游戏)
- python - 在 Python 中标记文件时设置位数
- javascript - 使用键盘快捷键运行 chrome 扩展