当前位置:网站首页>bizchart+slider实现分组柱状图
bizchart+slider实现分组柱状图
2022-07-04 20:57:00 【悟初境】
下面使用bizchart实现分组柱状图,并带有滑块选择。效果图如下:

环境
基于bizchart3.x
npm install [email protected]
npm install [email protected]
Chart-Slider组件封装
Chart和Slider是2个组件,为了方便使用,我们封装在一起,用一个函数返回。
import DataSet from '@antv/data-set';
import {
Axis, Chart, Geom, Legend, Tooltip } from "bizcharts";
import Slider from "bizcharts-plugin-slider";
import React, {
Component } from 'react';
function getGroupChartWithSliderComponent(data) {
const ds = new DataSet({
state: {
start: data[0] ? data[0].timestamp : '',
end: data[0] ? data[data.length - 1].timestamp : '$'
}
});
const dv = ds.createView('origin').source(data);
dv.transform({
type: 'filter',
callback(item) {
const r = item.timestamp;
return r >= ds.state.start && r <= ds.state.end;
}
});
class GroupChartWithSlider extends React.Component {
handleTimeSliderChange(e) {
const {
startValue, endValue } = e;
ds.setState('start', startValue);
ds.setState('end', endValue);
}
render() {
const chartScale = {
'timestamp': {
alias: '时间'
},
'count': {
alias: '次数'
}
};
return (
<div>
<Chart height={
200} data={
dv} forceFit padding='auto' scale={
chartScale}>
<Legend position="top-center" />
<Axis name="timestamp" />
<Axis name="count" />
<Tooltip />
<Geom
type="interval"
position="timestamp*count"
color={
["tag"]}
// color={["tag", ["#f5222d", "#ec6740", "#ffa39e"]]}
adjust={
[
{
type: "dodge",
marginRatio: 1 / 32
}]}
style={
{
stroke: "#fff",
lineWidth: 1
}}
/>
</Chart>
<Slider data={
data} padding={
10} xAxis="timestamp" yAxis="count"
scales={
{
// 不显示文本
timestamp: {
formatter: () => ''
}
}}
onChange={
this.handleTimeSliderChange.bind(this)} />
</div>
);
}
}
return GroupChartWithSlider;
}
使用
要生成分组柱状图,只需要同一个X轴的值有多个Y值即可,下面X轴是 timestamp, Y轴是 count.
class MyApp extends Component {
state = {
// 聚合分组柱状图图数据
groupErrorData: [/* { "timestamp": '2022-6-22T11:43', "count": 15, "tag": "鸡蛋", }, { "timestamp": '2022-6-22T11:43', "count": 3, "tag": "香蕉", }, { "timestamp": '2022-6-22T11:43', "count": 19, "tag": "南瓜", }, { "timestamp": '2022-6-22T11:43', "count": 5, "tag": "西南花", }, { "timestamp": '2022-6-22T11:45', "count": 6, "tag": "冬瓜", }, { "timestamp": '2022-6-22T11:45', "count": 20, "tag": "芹菜", }], }; render() { const GroupChartWithSlider = getGroupChartWithSliderComponent(this.state.groupErrorData); return ( <div> <GroupChartWithSlider /> </div > ); } } export default MyApp; Slider效果
Slider可以拖动,显示数据的趋势。
边栏推荐
- __ init__ () missing 2 required positive arguments
- ArcGIS 10.2.2 | solution to the failure of ArcGIS license server to start
- Minidom module writes and parses XML
- [weekly translation go] how to code in go series articles are online!!
- Huawei ENSP simulator enables devices of multiple routers to access each other
- Use of class methods and class variables
- How is the entered query SQL statement executed?
- Compréhension approfondie du symbole [langue C]
- 巅峰不止,继续奋斗!城链科技数字峰会于重庆隆重举行
- 每日一题-LeetCode1200-最小绝对差-数组-排序
猜你喜欢
随机推荐
[public class preview]: basis and practice of video quality evaluation
应用实践 | 蜀海供应链基于 Apache Doris 的数据中台建设
如何使用ConcurrentLinkedQueue做一个缓存队列
每日一题-LeetCode1200-最小绝对差-数组-排序
Word文档中标题前面的黑点如何去掉
redis缓存
迈动互联中标北京人寿保险
历史最全混合专家(MOE)模型相关精选论文、系统、应用整理分享
Lambdaquerywrapper usage
[C language] deep understanding of symbols
__ init__ () missing 2 required positive arguments
奋斗正当时,城链科技战略峰会广州站圆满召开
[buuctf.reverse] 151_[FlareOn6]DnsChess
Arcgis 10.2.2 | arcgis license server无法启动的解决办法
Monitor the shuttle return button
2021 CCPC 哈尔滨 B. Magical Subsequence(思维题)
杰理之AD 系列 MIDI 功能说明【篇】
Go language loop statement (3 in Lesson 10)
Kubedm initialization error: [error cri]: container runtime is not running
2021 CCPC 哈尔滨 I. Power and Zero(二进制 + 思维)








