d3 |
您所在的位置:网站首页 › rgb色阶表 › d3 |
颜色
创建图表最困难的部分之一是选择颜色。 错误的颜色会使图表没有吸引力、无效,最糟糕的是,难以阅读。 本节将为您提供选择颜色的良好框架、有关人类感知的重要事实以及简单的提示。 颜色比例尺在选择颜色比例时,您首先要确定其用途。回到我们对数据类型的了解,有三个基本的用例: 表示一个类别 表示一个连续的度量值 表示一个发散的度量值 表示类别我们讨论的前两种数据类型(二进制和标定)最好用分类配色方案表示。 由于我们的度量值没有自然的顺序,所以我们不想使用具有自然顺序的配色方案(比如白色到黑色)。 d3在其d3-scale-chromatic库中有内置的配色方案。 这些分类配色方案经过精心设计,可以在颜色之间形成足够的对比度。 这些方案中的每一个都是一个颜色数组——例如,要使用此列表中的第一个比例,我们将在 d3.schemeCategory10 中的索引处访问每种颜色。 对于分类的配色方案,这对每种颜色都有一个不同的描述性名称是很有帮助的。例如,可能有两种颜色可以被描述为“蓝色”,这可能会令人困惑。 表示连续度量对于连续的指标,我们将需要一种方法来在颜色值之间进行插值。例如,我们可以用从白色到深蓝色的颜色范围来表示湿度值。 d3-scale-chromium的内置连续比例尺在在顺序部分如下。
我们可以看到通过单色调比例(左)与多色调比例(右)区分 50% 和 60% 的颜色之间的差异是多么容易 我们的连续色阶在接近色阶末端时在视觉上更加清晰。 这非常适合突出显示高端值(例如,最高湿度值将是最明显的)。 但是,有时我们希望同时突出显示最低和最高指标值。 例如,如果我们正在查看温度,我们可能希望将最冷的日子突出显示为亮蓝色,将最热的日子突出显示为鲜红色。 发散的比例尺以非常饱和/深色的颜色开始和结束,并贯穿浅色的中间位置。
有时内置的色阶不会切割出你想要的颜色。 也许您有想要使用的特定颜色,或者您希望图表具有特定的色调。 不用担心! 我们可以使用 d3-interpolate 轻松制作自己的比例尺。 假设我们想用一种颜色来表示温度值,范围从“青色”到“红色”。我们可以用几种方法来插值这两种颜色,包括d3.interpolateRgb()和d3.interpolateHsl()。 让我们制作我们自己的比例,从“青色”到“番茄”——我们需要做的就是将我们的开始和结束颜色作为单独的参数传递给 d3.interpolateHcl()。 我们将在下一节讨论不同颜色空间(rgb、hsl、hcl)之间的区别。 d3.interpolateRgb("cyan","tomato")这将给我们一个这个比例尺:
将创建以下配色方案。
如果我们想创建具有多种颜色的离散配色方案,我们可以使用 d3-scale-chrom 的循环颜色刻度尺。
颜色可以用不同的格式表示,每种格式都具有不同的长处。但是创建我们自己的颜色需要小心,我们使用的颜色空间会影响我们的图表的解释程度。 三种颜色空间: rgb hsl hcl 虽然通常来说大家最熟悉的是rgb,但是当时我们以编程方式创建颜色比例时,我们有很好的理由使用hcl。继续读下去,找出原因。 在我们的图表代码中,我们使用了很多映射到特定的纯色的关键字。例如,我们把柱状图柱做成了玉米花蓝色。颜色关键词很好,因为它们很容易记住,并反映了我们在自然语言中引用颜色的方式。 currentColor 大多数颜色关键字是我们用英语描述颜色的方式,但有一个方便的特殊情况:currentColor。 currentColor 会将 CSS 属性设置为当前颜色属性。 这对于从图表组件外部控制单色图表非常有用。 例如,我们可以制作一个颜色填充为 currentColor 的折线图组件。 这样,我们可以轻松地创建不同颜色的线条,只需在 DOM 中将颜色设置得更高。 transparent 另一个有用的颜色关键字是透明度。 这在创建捕获鼠标事件的不可见 SVG 元素时非常有用,例如我们在第 5 章中用于捕获鼠标移动的监听矩形。 在创建数据可视化时,我们经常需要操纵颜色。 在这种情况下, 我们不能使用颜色关键字,因为没有办法使cornflowerblue深 10%。 为了操纵我们的颜色,我们需要了解颜色空间。 rgb你在从事开发时最有可能遇到的颜色空间是rgb。Rgb颜色由三个值组成: r: 红色 g: 绿色 b: 蓝色 对于这些值中的每一个,更高的数字使用更深的指定颜色。 把这些值组合在一起以创建一种颜色。 这就是 LCD 屏幕的基本工作原理:每个像素由红色、绿色、和蓝光组成。 这些值以加法方式组合,从黑色开始并朝着具有更高值的白色移动。 这可能与直觉相反任何在纸上使用颜料的人,其中更多的颜料 = 颜色更深。 例如, rgb(0,0,0) 代表黑色,rgb(255,255,255) 代表白色。 我们将讨论的所有颜色空间还有另一个可选的值: a: alpha 透明度 alpha值设置颜色的不透明度—alpha值为0的颜色将为透明。如果没有指定alpha值,则颜色将是完全不透明。 rgb可以用两种格式表示。第一个是函数表示法,以rgb开始,并在括号内按顺序列出每个颜色值。每个值都将在从0到255的范围内。如果我们想指定一个alpha值,我们将将该前缀切换为rgba。 例如,我们将把一种青色表示为绿色和蓝色的组合\
接下来,让我们来看看一个更接近我们的心理颜色模型的颜色空间。 hsl在hsl颜色空间中,这些值并不代表特定的颜色,而是代表颜色属性: h: hue.色调表示一个圆形色轮的角度,从红色(0度)开始,然后通过橙色、黄色、....,回到红色(360度)。 s:饱和度。饱和度值从灰色开始(0%),然后上升到完全饱和的颜色(100%)。 l:亮度。亮度值从白色(0%)开始,然后上升到黑色(100%)。 (a: 阿尔法值。同样,alpha通道是可选的,默认为完全不透明度(100%)) 在hsl中,我们的青色将部分围绕着色轮,完全饱和,和中等亮度。 hsl更接近于我们关于颜色之间关系的心理模型——要从蓝色切换到类似的暗橙色和饱和橙色,我们只需要更新色调值。hcl 颜色空间与 hsl 相似,具有相同的值(c 表示色度,这是色彩的另一种度量方式)。\ 这些值不是在空间上均匀的,而是在感知上是均匀的,因此亮度为 50% 的红色和蓝色看起来具有相同的亮度。 让我们看一下下图 hsl(顶部)和 hcl(底部) 在 100% 饱和度和 50% 亮度下的色调光谱。
深入阅读 d3-color虽然浏览器会识别 rgb 和 hsl 格式的颜色,但没有太多用于操作颜色的原生功能。 d3-color 模块具有用于识别 hcl 格式中的颜色、在格式之间转换以及沿颜色空间维度操作颜色的方法。 我们不会讨论d3-color的细节,但是了解库也是有必要的,如果你发现自己需要手动操作颜色,请查看github.com/d3/d3-color上的文档。 颜色提示在选择颜色刻度尺时,请牢记以下几点提示。 对比度
在一些站点中,您可以模拟不同类型的色盲来测试数据可视化,比如color-blindness.com。 Comparing colors
灰色可能是最重要的颜色。当您想要突出显示图表的部分时,保持其他元素的灰色有助于查看者关注该元素。 合并起来通过这一章完成伟大的工作。基础知识学习起来可能很乏味,但了解基本知识将为您制作自己的数据可视化打下良好的基础。 以下就是我们这一章的汇总图 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |