当前位置:网站首页>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可以拖动,显示数据的趋势。
边栏推荐
- How to use concurrentlinkedqueue as a cache queue
- Arcgis 10.2.2 | arcgis license server无法启动的解决办法
- minidom 模块写入和解析 XML
- Interviewer: what is XSS attack?
- 每日一题-LeetCode1200-最小绝对差-数组-排序
- How to implement Devops with automatic tools
- Configuration of DNS server of Huawei ENSP simulator
- 解析steam教育中蕴含的众创空间
- SolidWorks工程图添加材料明细表的操作
- Application practice | Shuhai supply chain construction of data center based on Apache Doris
猜你喜欢
Compréhension approfondie du symbole [langue C]
Jerry added the process of turning off the touch module before turning it off [chapter]
torch. Tensor and torch The difference between tensor
一文掌握数仓中auto analyze的使用
[wechat applet] collaborative work and release
Keep on fighting! The city chain technology digital summit was grandly held in Chongqing
Flutter TextField示例
[C language] deep understanding of symbols
Maidong Internet won the bid of Beijing life insurance
每日一题-LeetCode1200-最小绝对差-数组-排序
随机推荐
redis03——Redis的网络配置与心跳机制
Delphi soap WebService server-side multiple soapdatamodules implement the same interface method, interface inheritance
Redis 排查大 key 的3种方法,优化必备
Why does invariant mode improve performance
Compréhension approfondie du symbole [langue C]
Billions of citizens' information has been leaked! Is there any "rescue" for data security on the public cloud?
SolidWorks工程图添加材料明细表的操作
Flutter WebView示例
gtest从一无所知到熟练运用(1)gtest安装
GTEST from ignorance to proficiency (4) how to write unit tests with GTEST
gtest从一无所知到熟练使用(2)什么是测试夹具/装置(test fixture)
MP3是如何诞生的?
【LeetCode】17、电话号码的字母组合
Lambdaquerywrapper usage
gtest从一无所知到熟练使用(3)什么是test suite和test case
In the release version, the random white screen does not display the content after opening the shutter
【微信小程序】协同工作与发布
杰理之AD 系列 MIDI 功能说明【篇】
QT—绘制其他问题
Huawei ENSP simulator enables devices of multiple routers to access each other