react canvas 自定义 柱状图 tooltip

使用canvas写一个柱状图

背景

在项目开发中, 项目中只是用一个柱状图,无需使用第三方组件库(@ant-design/charts, G2, G2Plot, echarts等),自定义一个图表,定制化程度高,第三方组件库限制性大,自定义程度低。

功能说明

柱状图, 响应式,自定义tooltip样式
在这里插入图片描述

import React, { useEffect, useRef, useState } from 'react';
import styles from './IncomeRecord.less';

const config = { // 配置相关参数
    width: 640,
    height: 330,
    strokeCole: "#E5E5E5",
    fontSize: "14px",
    fontColor: "#858585",
    paddingLeft: 20,
    paddingTop: 20,
    paddingRight: 20,
    paddingBottom: 20,
    rowNum: 6, // 行数
    columnNum: 7, // 列数
    textX: ['01/03', '01/04', '01/05', '01/06', '01/07', '01/08', '01/09'], // 行文本
    offlineBillingData: [10, 20, 30, 0, 80, 60, 0],
    consultationData: [20, 20, 70, 50, 10, 0, 60],
    consultationColor: "#4F5EE5",
    offlineBillingColor: "#37962B",
    columnMaxNum: 100, // Y轴最大数
    columnSpacingWifth: 20, // 列距
    textYOffset: 24, // Y轴文字偏移量
    textXOffset: 4, // X轴文字偏移量
    chartXOffset: 24, // 柱状图X轴偏移量
    chartYOffset: 24, // 柱状图Y轴偏移量
}

const IncomeTrend: React.FC = () => {
    const refCanvas = useRef(null);
    const refCanvasWrap = useRef(null);
    const [chartWidth, setChartWidth] = useState(640);
    const [position, setPosition] = useState({ x: 0, y: 0 })
    const [currentData, setCurrentData] = useState({ x: 0, y: 0, d: "01/01", v: true })

    useEffect(() => {
        function resize(e: any) {
            const wrap: 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值