# @data-ui/histogram 中文文档

规范地址：https://npmcn.com/package/%40data-ui/histogram/

版本：0\.0\.84
npm 元数据更新时间：2022-06-12T16:52:53.378Z
中文译文更新时间：2026-11-11T12:57:15.776Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40data-ui/histogram
原文对照：https://npmcn.com/package/%40data-ui/histogram/?lang=original
项目主页：https://github.com/williaster/data-ui#readme
源码仓库：https://github.com/williaster/data-ui

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：122 kB，51 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：未声明
- 运行依赖：17 个
- peer 依赖：react ^15\.0\.0-0 \|\| ^16\.0\.0-0，react-dom ^15\.0\.0-0 \|\| ^16\.0\.0-0
- 首次发布：2017-08-04T08:06:38.887Z
- 最新版本发布：2019-11-19T23:44:31.499Z
- 近 30 天下载量：17164（2026-10-12 至 2026-11-10，npm 官方下载统计）
- 已发布版本数：40（近 12 个月 0 个）

## 中文简介

反应 + d3 创建直方图库

## 安装

```sh
npm install @data-ui/histogram
```

也可以使用：`pnpm add @data-ui/histogram`、`yarn add @data-ui/histogram`、`bun add @data-ui/histogram`

## README

# @ data- ui/ 图像

用于创建直方图的 React + d3 库. 垂直或水平,原始数据或被取出的数据,数字或绝对的取出,计数或密度,累计或不累计.

`npm install --save @data-ui/histogram`

[![](https://img.shields.io/npm/v/@data-ui/histogram.svg?style=flat-square)](https://img.shields.io/npm/v/@data-ui/histogram.svg?style=flat-square "package version")

![](https://user-images.githubusercontent.com/4496521/28901809-a03e88a6-77af-11e7-9882-468d362289bd.gif)

拆解它住在这里 [(原始内容存档于2017-10-21). williaster.github.io/data-ui](https://williaster.github.io/data-ui)。 。 。 .

## 示例用途

类似于 `@data-ui/xy-chart` 软件包,这个 `@data-ui/histogram` 软件包导出母程序 `<Histogram />` 集装箱组件,使其具有特殊性,并在整个儿童中进行协调。 您可以通过可选激活的母容器 `<BarSeries />` 和(或) `<DensitySeries />` 以及 `<XAxis />` 财务报告和审定财务报表 `<YAxis />`。 。 。 .

```javascript
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>
    );
  }
```

与民主 [直方图操场](https://williaster.github.io/data-ui)。 。 。 .

## 构成部分

检查故事本中的示例源代码和PropTable标签 [(原始内容存档于2017-10-21). williaster.github.io/data-ui](https://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` 函数。 嵌入式数据应具有以下形状:

```javascript
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()`。该工具提示意识到其容器的界限,应当“明智”定位.

如果你想在工具提示的渲染上更自定义,你可以做以下任一工作:

1.  滚动自己的工具提示定位逻辑并传递 `onMouseMove` 财务报告和审定财务报表 `onMouseLeave` 函数到 `Histogram`。这些职能移交给 `<BarSeries />` 儿童,以签名方式召唤 `onMouseMove({ data, datum, event, color })` 财务报告和审定财务报表 `onMouseLeave()` 在适当的触发.
    
2.  环绕 `<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`](https://github.com/williaster/data-ui/blob/master/packages/data-ui-theme/src/chartTheme.js) 举个例子.

```
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'
```

## 常见问题

### @data-ui/histogram 是什么？

反应 \+ d3 创建直方图库

### 如何安装 @data-ui/histogram？

在项目目录运行 npm install @data-ui/histogram，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：react（^15\.0\.0-0 \|\| ^16\.0\.0-0）、react-dom（^15\.0\.0-0 \|\| ^16\.0\.0-0）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @data-ui/histogram 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/data-ui\_\_histogram 是否存在。

### @data-ui/histogram 支持 ESM 还是 CommonJS？

同时提供 ES Module 与 CommonJS 入口，import 和 require\(\) 都可以使用，打包工具会自动选择合适的版本。

### @data-ui/histogram 可以商用吗？

@data-ui/histogram 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @data-ui/histogram 的下载量有多少？

根据 npm 官方下载统计，@data-ui/histogram 在 2026/10/12 – 2026/11/10 这 30 天内被下载 17,164 次，日均约 572 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @data-ui/histogram 还在维护吗？

最新版本 0\.0\.84 发布于 2019/11/20（6 年前）；至今共发布 40 个版本，其中过去 12 个月发布了 0 个；首次发布于 2017/08/04。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

