我正在尝试为热图创建线性色标.我想要着色以通过一大组特定颜色,其中第一种颜色对应于数据的最小值,最后一种颜色应该给予数据的最大值.
我知道我可以通过在最小值和最大值之间给出域17值来实现这一点,但是如果用户能够更改数据集(并因此更改热图的颜色),我不知道如何动态执行此操作
本质上我想跟随,但我知道它不起作用
var colorScale = d3.scale.linear()
.range(["#6363FF", "#6373FF", "#63A3FF", "#63E3FF", "#63FFFB", "#63FFCB",
"#63FF9B", "#63FF6B", "#7BFF63", "#BBFF63", "#DBFF63", "#FBFF63",
"#FFD363", "#FFB363", "#FF8363", "#FF7363", "#FF6364"])
.domain([d3.min(dataset, function(d) {return d;}),
d3.max(dataset, function(d) {return d;})]);
Run Code Online (Sandbox Code Playgroud)
任何人都可以告诉我,我需要将其放入"域名"以使其有效吗?
编辑:我确实找到了我想要的东西.使用RI在上面的17中使用designer.colors函数计算256种颜色并将其放入范围内.这确实给人一种持续色标的感觉
var colorScale = d3.scale.linear()
.range(["#6363FF", "#6364FF", "#6364FF", "#6365FF",
"... several other lines with color codes ..."
"#FF6764", "#FF6564", "#FF6464", "#FF6364"])
.domain(d3.range(1,257));
var quantize = d3.scale.quantile()
.range(d3.range(1,257))
.domain([d3.min(dataset, function(d) {return d;}),
d3.max(dataset, function(d) {return d;})]);
Run Code Online (Sandbox Code Playgroud)
现在我可以用这种方式使用颜色
colorScale(quantize(dataset))
Run Code Online (Sandbox Code Playgroud)
但我想知道这是否也可以用更少的代码行完成?
我想创建一个情节,可以看到一个人毕业后的专业与他们毕业后1.5年后所从事的职业/部门之间的流动.我考虑使用Sankey图表,如下图所示
但是希望通过将左侧(专业研究)和右侧(作业)分成两个弧来使这在视觉上更有趣.所以它可能会开始看起来像一个和弦图,但两个弧分开了一点.以下示例显示了两个弧的概念(尽管它们之间没有正确的流)
引用的Hierarchical Edge捆绑示例看起来有点类似于我想要实现的内容,但是这里的行没有厚度来显示从一端流向另一端的人数而没有2个单独的弧(尽管我可以创建两个白色部分没有流动来模仿分离)
有没有人有关于如何创建像Sankey图这样的圆/弧的示例?或者我应该从和弦图的角度来看这个吗?
谢谢您的帮助!
d3.js ×2