当前位置:网站首页>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可以拖动,显示数据的趋势。
边栏推荐
- Golang面试整理 三 简历如何书写
- AcWing 2022 每日一题
- Monitor the shuttle return button
- 2021 CCPC 哈尔滨 B. Magical Subsequence(思维题)
- How to remove the black dot in front of the title in word document
- 奋斗正当时,城链科技战略峰会广州站圆满召开
- Operation of adding material schedule in SolidWorks drawing
- 更强的 JsonPath 兼容性及性能测试之2022版(Snack3,Fastjson2,jayway.jsonpath)
- flink1.13 sql基础语法(一)DDL、DML
- Redis transaction
猜你喜欢
Difference between ApplicationContext and beanfactory (MS)
每日一题-LeetCode1200-最小绝对差-数组-排序
Compréhension approfondie du symbole [langue C]
TCP三次握手,四次挥手,你真的了解吗?
redis03——Redis的网络配置与心跳机制
Maidong Internet won the bid of Beijing life insurance
一文掌握数仓中auto analyze的使用
TCP shakes hands three times and waves four times. Do you really understand?
[C language] deep understanding of symbols
WGCNA分析基本教程总结
随机推荐
一文掌握数仓中auto analyze的使用
redis缓存
Exclusive interview of open source summer | new committer Xie Qijun of Apache iotdb community
Routing configuration and connectivity test of Huawei simulator ENSP
MP3是如何诞生的?
redis事务
迈动互联中标北京人寿保险
每日一题-LeetCode1200-最小绝对差-数组-排序
创客思维在高等教育中的启迪作用
杰理之增加进关机前把触摸模块关闭流程【篇】
解读创客教育中的各类智能化组织发展
如何借助自动化工具落地DevOps
GTEST from ignorance to proficiency (4) how to write unit tests with GTEST
How to use concurrentlinkedqueue as a cache queue
Three or two things about the actual combat of OMS system
SolidWorks工程图添加材料明细表的操作
2021 CCPC 哈尔滨 I. Power and Zero(二进制 + 思维)
In the release version, the random white screen does not display the content after opening the shutter
Lambdaquerywrapper usage
改善机器视觉系统的方法