📅  最后修改于: 2023-12-03 15:34:39.191000             🧑  作者: Mango
React Suite ScatterChart 组件是一个用于生成散点图的 React 组件。它可以让用户方便地创建一个带有自定义样式和交互功能的散点图,用于数据可视化和分析。
npm install rs-scatter-chart
import { ScatterChart } from "rs-scatter-chart";
<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],
},
}}
/>
data
: 散点数据,必需。可以是数组类型,每个元素代表一个散点的坐标,格式为 { x: number, y: number }
。scatter
: 散点配置项。包含以下属性:fill
: 散点颜色,默认是 #8884d8
stroke
: 散点边框颜色,默认是 none
size
: 散点大小,默认是 6
shape
: 散点形状,默认是 circle
,可选值有 circle
、square
、diamond
、triangle-up
、triangle-down
、hexagon
、pentagon
、star
、cross
、x
。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
: 标签位置,可以是 top
、right
、bottom
、left
,默认是 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
: 标签位置,可以是 top
、right
、bottom
、left
,默认是 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],
},
}}
/>;
散点图效果如下:
更多示例和代码可以查看 React Suite ScatterChart 组件官方文档。