📜  React Suite ScatterChart 组件(1)

📅  最后修改于: 2023-12-03 15:34:39.191000             🧑  作者: Mango

React Suite ScatterChart 组件

React Suite ScatterChart 组件是一个用于生成散点图的 React 组件。它可以让用户方便地创建一个带有自定义样式和交互功能的散点图,用于数据可视化和分析。

特点
  • 可自定义散点颜色、大小、形状等属性
  • 支持 x 轴、y 轴的数据范围、间隔、刻度等属性自定义
  • 支持鼠标悬浮散点时的提示框
  • 支持平移、缩放等交互操作
  • 支持对散点进行聚类展示
  • 支持导出为图片或 SVG 格式
使用方法
  1. 安装 React Suite ScatterChart 组件
npm install rs-scatter-chart
  1. 引入 ScatterChart 组件
import { ScatterChart } from "rs-scatter-chart";
  1. 在代码中使用 ScatterChart 组件
<ScatterChart
  data={data}
  xField="x"
  yField="y"
  scatter={{
    fill: "#2962FF",
    size: 4,
  }}
  xAxis={{
    type: "linear", // x轴类型为线性轴
    domain: [0, 100],
    range: [0, 500],
    interval: 10,
    ticks: [0, 20, 40, 60, 80, 100],
    label: {
      value: "x-axis",
      position: "bottom",
      offset: [0, -10],
    },
  }}
  yAxis={{
    type: "linear", // y轴类型为线性轴
    domain: [0, 100],
    range: [0, 300],
    interval: 10,
    ticks: [0, 20, 40, 60, 80, 100],
    label: {
      value: "y-axis",
      position: "left",
      rotation: -90,
      offset: [0, 0],
    },
  }}
/>
API
数据
  • data: 散点数据,必需。可以是数组类型,每个元素代表一个散点的坐标,格式为 { x: number, y: number }
散点
  • scatter: 散点配置项。包含以下属性:
    • fill: 散点颜色,默认是 #8884d8
    • stroke: 散点边框颜色,默认是 none
    • size: 散点大小,默认是 6
    • shape: 散点形状,默认是 circle,可选值有 circlesquarediamondtriangle-uptriangle-downhexagonpentagonstarcrossx
    • opacity: 散点透明度,取值范围是 [0, 1],默认是 1
    • activeFill: 鼠标悬浮时的散点颜色,默认是 lighten(fill, 0.4)
坐标轴
  • xAxis: x 轴配置项。包含以下属性:

    • type: x 轴类型,可以是 linear(线性轴)或 category(分类轴),默认是 linear
    • scale: x 轴的坐标缩放,可以是 linear(线性比例尺)或 log(对数比例尺),默认是 linear
    • domain: x 轴数据范围,默认是 [ 0, 1 ]
    • range: x 轴范围,即 x 轴长度。默认是 auto,表示自适应
    • interval: x 轴刻度之间的间隔,默认是 auto
    • ticks: x 轴要显示的刻度值数组。默认是 auto,表示自动计算
    • label: x 轴标签,包含以下属性:
      • value: 标签文本
      • position: 标签位置,可以是 toprightbottomleft,默认是 bottom
      • rotation: 标签旋转角度,默认是 0
      • offset: 标签偏移量,默认是 [0, 0]
  • yAxis: y 轴配置项。包含以下属性:

    • type: y 轴类型,可以是 linear(线性轴)或 category(分类轴),默认是 linear
    • scale: y 轴的坐标缩放,可以是 linear(线性比例尺)或 log(对数比例尺),默认是 linear
    • domain: y 轴数据范围,默认是 [ 0, 1 ]
    • range: y 轴范围,即 y 轴长度。默认是 auto,表示自适应
    • interval: y 轴刻度之间的间隔,默认是 auto
    • ticks: y 轴要显示的刻度值数组。默认是 auto,表示自动计算
    • label: y 轴标签,包含以下属性:
      • value: 标签文本
      • position: 标签位置,可以是 toprightbottomleft,默认是 left
      • rotation: 标签旋转角度,默认是 -90
      • offset: 标签偏移量,默认是 [0, 0]
提示框
  • tooltip: 鼠标悬停时显示的提示框配置项。如果不需要提示框,可以不设置此项,或将其值设为 false。包含以下属性:
    • show: 是否显示提示框,默认是 true
    • label: 提示框文本,包含以下属性:
      • value: 提示文本模板,模板中使用 ${fieldName} 表示数据中的字段名,可以使用 HTML 代码,如:${date} <br/> ${value}
    • style: 提示框样式
    • itemStyle: 提示框中数据项的样式
交互
  • pan: 是否启用平移。启用后可以拖动图表移动位置。默认是 true
  • zoom: 是否启用缩放。启用后可以滑动鼠标缩放图表。默认是 true
  • clamp: x 轴或 y 轴移动时是否限制在提示框区域内。默认是 false
  • zoomSensitivity: 缩放时的敏感度,默认是 0.1
  • onAxisRangeChange: x 轴或 y 轴范围改变时触发的回调函数。参数是 { xAxis: { domain, interval }, yAxis: { domain, interval } },即 x 轴和 y 轴的数据范围和刻度间隔
  • onHover: 鼠标悬浮散点时触发的回调函数。参数是 { data, index },即悬浮的散点数据和索引
导出
  • exportToImage: 导出图表为图片。参数是一个回调函数,在导出成功后调用,参数为 dataURL,即导出的图片 Base64 数据。
  • exportToSVG: 导出图表为 SVG。参数是一个回调函数,在导出成功后调用,参数为 svgText,即导出的 SVG 代码。
示例

以下是一个简单的散点图示例:

import { ScatterChart } from "rs-scatter-chart";

const data = [
  { x: 10, y: 20 },
  { x: 20, y: 30 },
  { x: 30, y: 10 },
  { x: 40, y: 45 },
  { x: 50, y: 15 },
  { x: 60, y: 5 },
  { x: 70, y: 50 },
  { x: 80, y: 30 },
  { x: 90, y: 20 },
  { x: 100, y: 55 },
];

<ScatterChart
  data={data}
  xField="x"
  yField="y"
  scatter={{
    fill: "#8884d8",
    size: 6,
  }}
  xAxis={{
    type: "linear",
    domain: [0, 100],
    range: [0, 500],
    interval: 10,
    ticks: [0, 20, 40, 60, 80, 100],
    label: {
      value: "x-axis",
      position: "bottom",
      offset: [0, -10],
    },
  }}
  yAxis={{
    type: "linear",
    domain: [0, 100],
    range: [0, 300],
    interval: 10,
    ticks: [0, 20, 40, 60, 80, 100],
    label: {
      value: "y-axis",
      position: "left",
      rotation: -90,
      offset: [0, 0],
    },
  }}
/>;

散点图效果如下:

ScatterChart Demo

更多示例和代码可以查看 React Suite ScatterChart 组件官方文档