D3 直方布局
2022-04-21
直方布局(Histogram Layout
),可以用于表示数据的分布。可分为矩阵直方图(Matrix histogram)
和曲线直方图(Curve histogram)
两种表达方式。
ID | DA | FA |
---|---|---|
d3.layout.histogram() | 创建一个直方图布局 | |
histogram.value() | 设置或获取值访问器 | |
histogram.range() | 设置数据的分布范围,主要分为两个数组指定(分别表述上限(min) 以及下线(max) ) |
|
histogram.bins() | 设置数据的分布区间的个数或长度,如果没有参数则默认返回当前设置的值 | |
histogram.bins(count ) |
将count 作为参数则代表数据的分布区间(bins) 的数量,bins 的区间长度则会被均匀 的分割 |
|
histogram.bins(thresholds ) |
可以指定任意长度的区间(如:[100, 125, 130, 135, 140, 145] ) |
|
histogram.bins(function ) |
当前函数必须返回 一个thresholds 数组 |
|
histogram.frequency(frequency ) |
值为true 为统计数量;反之false 则是统计频率 |
|
d3.random.normal() | 用于生成正态分布 ,主要用于表述一个不明的随机变量 ,通常第一个参数用于表述平均值 ,第二个参数是标准差 |
数据转换与确定数据
normal 确定数据
normal 即 正态
分布,主要用于表示出一个不明的随机变量,通常第一个参数用于表述出平均值
,而第二个参数即代表标准差
,(Standard Deviation)在概率统计
上标准差定义是总体各单位的标准值与其平均数离差的算数平均数的平方根,可以反映出个体间的离散程度
,通过下述 Code 你会感觉到每次输出的数据坐标,都是不一样的
1 | /* |
转换数据
通过使用normal
生成的随机数据是人类无法直接理解其意思的,因此需要通过使用其直方布局
进行转换出人类可理解
的数据含义,主要有三个变量,分别为x:区间的下限值、dx:区间的长度、y:此处的区间数量(frequency true)或频率(frequency false)
1 | /* |
绘制
矩形直方图
通过使用 normal
以及 Histogram Layout
计算出数据后,通过比例尺来创建x\y
轴并绘制矩形,最后形成为矩形直方图。
1 | var padding = { |
需要注意的是,我们需要为此添加CSS样式:
1 | @color: #929292; |
曲线直方图
相比与矩形直方图( Rectangle Histogram
)来比,曲线直方图(Curve Histogram
)更加的的连贯,在下述的 code 中,主要将坐标轴以及比例尺进行倒序,之后通过line
将其绘制路径。
1 | var padding = { |