千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > 如何在使用visx做出反应中创建瀑布图

如何在使用visx做出反应中创建瀑布图

来源:千锋教育
发布人:syq
时间: 2022-09-19 10:49:22 1663555762

  有关如何使用Airbnb的 visx 库为 React Web 应用程序创建瀑布图的教程。

  介绍

  在本教程中,我们将介绍如何为 React Web 应用程序创建瀑布图。首先,让我们了解什么是瀑布图。

使用visx做出反应中创建瀑布图

  什么是瀑布图?

  瀑布图与条形图类似,只是其累积性质不同。它显示一系列步骤,以便在每个步骤中增加或减去当前值,以显示累积结果。图表的最后一个条表示总值。

1

  我们将要构建的瀑布图

  技术

  我们将使用由Airbnb构建的visx库。Visx 是一组低级视觉基元,它使用 d3 进行数学运算,使用 React 进行高效的 DOM 管理。与电子图表、Recharts 和类似库不同,它不提供一组即用型图表。尽管它们提供了高质量的可自定义图表,但不可能构建一种与这些库提供的完全不同的全新可视化类型。另一方面,visx 提供了一组方便的构建基块来创建任何自定义可视化效果。

  项目设置

  1. 创建一个新的 React 项目

  使用创建-反应-应用 CLI 初始化“反应 + 类型脚本”项目。

2

  2. 安装依赖项

  安装所需的 visx 和 d3 数组依赖项。

3

  3. 创建项目框架

  我们将从为我们的瀑布图创建基础开始。在 src 文件夹下创建以下文件:

4

  项目样板

  该代码使用包中的组件,其目的是测量其父元素的尺寸并将其提供给子组件。ParentSize @visx/responsiveWaterfallChart

  构建瀑布图

  在以下步骤中,我们将设计组件 API,并从轴和网格开始逐步构建图表,最后以呈现数据标签结束。

  1. 定义组件接口

  我们的图形应该支持可视化任意数据集。为了通过类型安全支持它,让我们使用描述数据形状的类型参数使组件成为通用组件。我们还需要指定访问器函数来从单个数据点检索 X 和 Y 值。TDatum

5

  WatercallChart component API

  2. 计算瀑布条

  下一步是根据原始数据计算瀑布步数。这可以通过具有累积值跟踪的数据顺序枚举来完成。在每个步骤中,上一个累积值表示列的起点,终点表示为添加或减去当前数据点值。

6

  从原始数据计算瀑布步骤

  3. 构建图表刻度

  现在,当我们有实际值要呈现时,我们可以计算图表刻度。Scale是一种将数据集值映射到可视值(在本例中为坐标)的函数。

  对于我们的域是一组瀑布步骤,这些步骤将映射到 的坐标范围。该参数定义条形之间的间距。xScale[0, innerWidth]padding

  另一方面,要计算Y轴域,我们需要迭代起始值和结束值,找到其中的最小值和最大值。然后,我们将它映射到 .该参数扩大域间隔以使用舍入值,以便更好地理解图形。[innerHeight, 0]nice

7

  创建图表比例函数

  4. 渲染图表轴

  使用缩放函数,我们能够渲染图表轴和背景网格。visx 库为我们将要使用的组件提供了即用型可配置组件。

8

9

  图表轴和背景网格

  5. 渲染瀑布步骤

  使用图表刻度和先前计算的步骤,我们可以计算图表条的坐标及其高度,如下所示。

10

  渲染瀑布步骤

11

  几乎准备就绪的瀑布图

  6. 添加标签和步骤连接

  可以通过添加数据标签来提高图表的可读性。下面的代码将正值呈现在其条形上方,将负值呈现在其条形下方。作为最后点睛之笔,让我们用虚线连接条形图。

12

  带有数据标签的渲染条

13

  最终结果

  结论

  在本指南中,我们介绍了什么是瀑布图,以及使用 visx 的低级基元如何帮助为 React 应用程序创建瀑布图。

tags:
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT
开班信息
北京校区
  • 北京校区
  • 大连校区
  • 广州校区
  • 成都校区
  • 杭州校区
  • 长沙校区
  • 合肥校区
  • 南京校区
  • 上海校区
  • 深圳校区
  • 武汉校区
  • 郑州校区
  • 西安校区
  • 青岛校区
  • 重庆校区
  • 太原校区
  • 沈阳校区
  • 南昌校区
  • 哈尔滨校区