@ data- ui/ 图像
用于创建直方图的 React + d3 库. 垂直或水平,原始数据或被取出的数据,数字或绝对的取出,计数或密度,累计或不累计.
npm install --save @data-ui/histogram
拆解它住在这里 (原始内容存档于2017-10-21). williaster.github.io/data-ui。 。 。 .
示例用途
类似于 @data-ui/xy-chart 软件包,这个 @data-ui/histogram 软件包导出母程序 <Histogram /> 集装箱组件,使其具有特殊性,并在整个儿童中进行协调。 您可以通过可选激活的母容器 <BarSeries /> 和(或) <DensitySeries /> 以及 <XAxis /> 财务报告和审定财务报表 <YAxis />。 。 。 .
import { Histogram, DensitySeries, BarSeries, withParentSize, XAxis, YAxis } from '@data-ui/histogram';
const ResponsiveHistogram = withParentSize(({ parentWidth, parentHeight, ...rest}) => (
<Histogram
width={parentWidth}
height={parentHeight}
{...rest}
/>
);
const rawData = Array(100).fill().map(Math.random);
...
render () {
return (
<ResponsiveHistogram
ariaLabel="My histogram of ..."
orientation="vertical"
cumulative={false}
normalized={true}
binCount={25}
valueAccessor={datum => datum}
binType="numeric"
renderTooltip={({ event, datum, data, color }) => (
<div>
<strong style={{ color }}>{datum.bin0} to {datum.bin1}</strong>
<div><strong>count </strong>{datum.count}</div>
<div><strong>cumulative </strong>{datum.cumulative}</div>
<div><strong>density </strong>{datum.density}</div>
</div>
)}
>
<BarSeries
animated
rawData={rawData /* or binnedData={...} */}
/>
<XAxis />
<YAxis />
</ResponsiveHistogram>
);
}
与民主 直方图操场。 。 。 .
构成部分
检查故事本中的示例源代码和PropTable标签 (原始内容存档于2017-10-21). williaster.github.io/data-ui。 。 。 .
<Histogram />
| 名称 | 类型 | 默认 | 说明 |
|---|---|---|---|
| 线形标签 | PropTypes.string. is required 互联网档案馆的存檔,存档日期2013-10-02 | - 说吧 | 无障碍标签 |
| bin Values 选项 | PropTypes.arrayOf(PropTypes.one OfType ([PropTypes.number,PropTypes.string])). 維基共享資源中相关的原始文献: 通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通通通訊通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通 | 无效 | Bin 阈值, 超过 binCount |
| 宾肯特 | PropTypes. 数 | 10个 | 要使用的相近的 bin 数量( 如果数据尚未被选中) |
| 宾盘 | ProjectTypes.one of(["数字","分类"]) | 数字 | 指定宾箱是绝对还是数字 |
| 儿童 | ProjectTypes.node.is 必需 | - 说吧 | 儿童系列、轴心或其他 |
| 累计数 | PropTypes.bool (英语) | 虚假 | 是否显示累积直方图 |
| 高度 | PropTypes.number.is 必需 | - 说吧 | 可视化高度 |
| 水平 | PropTypes.bool (英语) | 虚假 | 直方图是垂直方向还是水平方向 |
| 限制 | PropTypes.array (英语) | 无效 | 边际值被忽略 |
| 边距 | PropTypes.shape ({上:PropTypes. number,右:PropTypes. number,下:PropTypes. number,左:PropTypes. number }) | {上:32,右:32,下:64,左:64}} | 图表边距,留下轴和标签! |
| 已正常化 | PropTypes.bool (英语) | 虚假 | 值轴是否作为总计的分数正常化 |
| 主题 | PropTypes.object 主题 | {} | 图表主题对象,见下文主题. |
| 宽度 | PropTypes.number.is 必需 | - 说吧 | svg 宽度 |
| 参数 | PropTypes.func | (单位:千美元) | 对于原始数据, 如何访问 bin 值 |
<*Series />
<BarSeries /> 财务报告和审定财务报表 <DensitySeries /> 组件接受 无论是 rawData 或者说 binnnedData。只要每个数据值可以用直方图访问,原始数据可以采用任何格式 valueAccessor 函数。 嵌入式数据应具有以下形状:
export const numericBinnedDatumShape = PropTypes.shape({
id: PropTypes.string.isRequired,
bin0: PropTypes.number.isRequired,
bin1: PropTypes.number.isRequired,
count: PropTypes.number.isRequired,
});
export const categoricalBinnedDatumShape = PropTypes.shape({
id: PropTypes.string.isRequired,
bin: PropTypes.string.isRequired,
count: PropTypes.number.isRequired,
});
如果两者兼有 rawData 财务报告和审定财务报表 binnnedData 提供, rawData 被忽略.
<BarSeries />
| 名称 | 类型 | 默认 | 说明 |
|---|---|---|---|
| 动画 | PropTypes.bool (英语) | 真实 | 是否对序列中的数据进行动态更新 |
| 原始数据 | PropTypes.array (英语) | [ | 原始数据 |
| 宾尼德数据 | 宾尼德数据元件 | [ | 嵌入数据 |
| 填满 | PropTypes.one of Type ([PropTypes.func, propTypes.string]) (英语) | @ data- ui/ semale.color. 默认 | 确定条填充颜色 |
| 填充时间 | PropTypes.one of Type ([PropTypes.func, propTypes.number]) (英语) | 0.7 (简体中文) | 条状填充不透明 |
| 中风 | PropTypes.one of Type ([PropTypes.func, propTypes.string]) (英语) | 白话 | 确定条中风颜色 |
| 中风 | PropTypes.one of Type ([PropTypes.func, propTypes.number]) (英语) | 1个 | 确定条大纲的宽度 |
| 点击 | PropTypes.func | - 说吧 | 在栏上点击,签名为: ({ event, data, datum, color, index }) |
<DensitySeries />
对于 原始数据 这是 数字,则 <DensitySeries /> 绘制概率密度函数的估计数,即内核密度估计数。 如果将预先汇总和/或绝对数据传递给系列,则它会根据数据计数绘制一个数值的区域图.
| 名称 | 类型 | 默认 | 说明 |
|---|---|---|---|
| 动画 | PropTypes.bool (英语) | 真实 | 是否对序列中的数据进行动态更新 |
| 原始数据 | PropTypes.array (英语) | [ | 原始数据 |
| 宾尼德数据 | 宾尼德数据元件 | [ | 嵌入数据 |
| 填满 | PropTypes.one of Type ([PropTypes.func, propTypes.string]) (英语) | @ data- ui/ semale.color. 默认 | 确定条填充颜色 |
| 内核 | ProjectTypes.one of (['goussian','parabolic']) (英语) | "高卢人" | 内核函数类型,抛物线=epanechnikov内核 |
| 显示区域 | PropTypes.bool (英语) | 真实 | 是否显示密度区域填充 |
| 显示行 | PropTypes.bool (英语) | 真实 | 是否显示密度行路径 |
| 平滑 | PropTypes. 数 | 1个 | 抛物管/ epanechinikov 内核函数的平滑常数 |
| 填充时间 | PropTypes.one of Type ([PropTypes.func, propTypes.number]) (英语) | 0.7 (简体中文) | 显示的区域填充不透明 |
| 中风 | PropTypes.one of Type ([PropTypes.func, propTypes.string]) (英语) | 白话 | 显示时确定行色 |
| 中风 | PropTypes.one of Type ([PropTypes.func, propTypes.number]) (英语) | 2个 | 显示行路径的宽度 |
| 中风 Dasharray | PropTypes.one of Type ([PropTypes.func, propTypes.string]) (英语) | '' | 显示时确定线条的虚线图案 |
| 中风线盖 | PropTypes.one of (['but','square','round','in herit']) (中文(简体) ) | "圆" | 线条路径中键的样式 |
| 使用全比例 | PropTypes.bool (英语) | 虚假 | 如果选中的话, 密度图将缩放以填充整个图的 y 范围 。 如果错误, 最大值会缩放到序列的倒数 |
<XAxis /> 财务报告和审定财务报表 <YAxis />
| 名称 | 类型 | 默认 | 说明 |
|---|---|---|---|
| 轴样式 | 轴式形状 | {} | 轴和轴标签样式的配置对象,见下文主题 |
| 标签 | PropTypes.one of Type ([PropTypes.string,PropTypes.element]) (英语) | < text {. axisStyles. label[指向]}/ > | 轴标签的字符串或组件 |
| 数字 | PropTypes. 数 | 无效 | 勾选的大致数量 |
| 方向 | XAxis projectTypes.oneOf (['bottom','top']) 或 YAxis projectTypes.oneOf (['左','右']) | 下, 左边 | 轴方向 |
| 计时器 | 勾结样式形状 | {} | 用于样式勾选和勾选标签的配置对象,见下文主题 |
| 勾选标签组件 | PropTypes.elements (英语) | < text {. tickStyles. label[指向]}/ > | 用于勾选标签的组件 |
| 勾选表 | PropTypes.func | 无效 | (tick, tickIndex) QQ 格式化的勾选 |
| 勾选值 | PropTypes.arrayOf(PropTypes.one OfType ([PropTypes.number,PropTypes.string])). 維基共享資源中相关的原始文献: 通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通訊通通通訊通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通通 | 无效 | 自定义勾选值 |
工具提示
直方图支持工具提示 BarSeries编辑 简单 将工具提示从框中取出的方式是: renderTooltip 函数改为 <Histogram /> 如以上例子所示。 此函数以形状为对象 { event, datum, data, color } 如上所示,作为输入并应当返回工具提示(而不是工具提示容器!)的内部内容. datum 对应 已弹入 数据点,请参见以上指定形状,这些形状取决于您的本位是绝对的还是数字的. color 代表条形填充。 如果此函数返回 a falsy 值,将不提供工具提示.
盖子下面,这个包住 <Histogram /> 导出部件 <WithTooltip /> HOC,它包起来 svg 在一个 <div /> ,并处理 HTML 工具提示的定位和渲染,其内容由返回 renderTooltip()。该工具提示意识到其容器的界限,应当“明智”定位.
如果你想在工具提示的渲染上更自定义,你可以做以下任一工作:
-
滚动自己的工具提示定位逻辑并传递
onMouseMove财务报告和审定财务报表onMouseLeave函数到Histogram。这些职能移交给<BarSeries />儿童,以签名方式召唤onMouseMove({ data, datum, event, color })财务报告和审定财务报表onMouseLeave()在适当的触发. -
环绕
<Histogram />内<WithTooltip />接受额外定制的道具:
| 名称 | 类型 | 默认 | 说明 |
|---|---|---|---|
| 儿童 | PropTypes.func 或 propTypes.object | - 说吧 | 使用 MouseMove 、 MouseLeave 和工具tipData 道具/ 键的子函数(调用) 或元素( 克隆) |
| 类Name | PropTypes.string (英语) | - 说吧 | 要添加的类名 <div> 容器包装器 |
| 渲染工具提示 | PropTypes.func.is 必需 | - 说吧 | 显示 目录 工具提示,签名 ({ event, data, datum, color, index }) => node如果该函数返回 a falsy 值,将不提供工具提示. |
| 样式 | PropTypes.object 主题 | {} | 要添加的样式 <div> 容器包装器 |
| 工具提示组件 | PropTypes.func 或 propTypes.object | @vx是因为 TooltipWithBounds | 用作工具提示容器组件的组件(而非实例)。 它通过 top 财务报告和审定财务报表 left 定位数字 |
| 工具提示 | PropTypes.object 主题 | - 说吧 | 传递给 TooltipComponent |
| 工具提示超时 | PropTypes. 数 | 200个 | 调用时工具提示隐藏的超时 onMouseLeave |
主题
具有以下形状的主题对象可以传递到 <Histogram /> 用于样式图、轴和系列。 或者,按键(例如 xAxisStyles)可以直接传递到轴元件上.
见 @data-ui/theme 举个例子.
export const themeShape = PropTypes.shape({
gridStyles: PropTypes.shape({
stroke: PropTypes.string,
strokeWidth: PropTypes.number,
}),
xAxisStyles: PropTypes.shape({
stroke: PropTypes.string,
strokeWidth: PropTypes.number,
label: PropTypes.shape({
bottom: PropTypes.object,
top: PropTypes.object,
}),
}),
yAxisStyles: PropTypes.shape({
stroke: PropTypes.string,
strokeWidth: PropTypes.number,
label: PropTypes.shape({
left: PropTypes.object,
right: PropTypes.object,
}),
})
xTickStyles: PropTypes.shape({
stroke: PropTypes.string,
tickLength: PropTypes.number,
label: PropTypes.shape({
bottom: PropTypes.object,
top: PropTypes.object,
}),
}),
yTickStyles: PropTypes.shape({
stroke: PropTypes.string,
tickLength: PropTypes.number,
label: PropTypes.shape({
left: PropTypes.object,
right: PropTypes.object,
}),
}),
});
发展
npm install
yarn run dev # or 'build'