前端开发之vue可视化数据图表组件(Chart.js)

前言

在开发过程中会遇到数据的可视化展示,使用Chart.js 在Vue 搭建后台管理做视图呈现感觉是比较好用的插件,这个插件是一个基于 JavaScript 的开源可视化图表库

制作好的效果图

在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

vue2中使用Chart.js

1、在项目中安装Chart.js 组件

npm install chart.js

2、vue文件

<template>
  <Bar
    :chart-data="chartData"
    :chart-id="chartId"
    :chart-options="chartOptions"
    :css-classes="cssClasses"
    :dataset-id-key="datasetIdKey"
    :height="height"
    :plugins="plugins"
    :styles="styles"
    :width="width"
  />
  <el-button type="primary">Ran</el-button>
</template>

<script>
  import { Bar } from 'vue-chartjs'
  import {
    Chart as ChartJS,
    Title,
    Tooltip,
    Legend,
    BarElement,
    CategoryScale,
    LinearScale,
  } from 'chart.js'

  ChartJS.register(
    Title,
    Tooltip,
    Legend,
    BarElement,
    CategoryScale,
    LinearScale
  )
  // const utils = require('@/utils/utils')
  export default {
    name: 'BarChart',
    components: { Bar },
    props: {
      chartId: {
        type: String,
        default: 'bar-chart',
      },
      datasetIdKey: {
        type: String,
        default: 'label',
      },
      width: {
        type: Number,
        default: 100,
      },
      height: {
        type: Number,
        default: 50,
      },
      cssClasses: {
        default: '',
        type: String,
      },
      styles: {
        type: Object,
        default: () => {},
      },
      plugins: {
        type: Array,
        default: () => [],
      },
    },
    data() {
      return {
        chartData: {
          labels: [
            '水星',
            '金星',
            '地球',
            '火星',
            '木星',
            '土星',
            '天王星',
            '海王星',
          ],
          datasets: [
            {
              label: '行星卫星数量',
              data: [0, 0, 1, 2, 79, 82, 27, 14],
              backgroundColor: '#ffa0b4',
              borderColor: '#ff6384',
              borderWidth: 3,
              borderRadius: 5,
              borderSkipped: false,
            },
            {
              label: '太阳系行星质量 (相对于太阳 x 10^-6)',
              data: [
                -16.6,
                -208.1,
                -300.3,
                123,
                954.792,
                685.886,
                243.662,
                201.514,
              ],
              backgroundColor: '#9ad0f5',
              borderColor: '#36a2eb',
              borderWidth: 3,
            },
          ],
        },
        chartOptions: {
          responsive: true,
          plugins: {
            legend: {
              position: 'top',
            },
            title: {
              display: true,
              text: 'Chart.js Bar Chart',
            },
          },
        },
      }
    },
  }
</script>

在这里插入图片描述

vue3中使用Chart.js

vue文件

<template>
  <Bar
    :chart-data="chartData"
    :chart-id="chartId"
    :chart-options="chartOptions"
    :css-classes="cssClasses"
    :dataset-id-key="datasetIdKey"
    :height="height"
    :plugins="plugins"
    :styles="styles"
    :width="width"
  />
  <el-button type="primary" @click="handledetailpeizhi">Ran</el-button>
</template>

<script>
  import { Bar } from 'vue-chartjs'
  import { reactive, toRefs } from 'vue'
  import {
    Chart as ChartJS,
    Title,
    Tooltip,
    Legend,
    BarElement,
    CategoryScale,
    LinearScale,
  } from 'chart.js'

  ChartJS.register(
    Title,
    Tooltip,
    Legend,
    BarElement,
    CategoryScale,
    LinearScale
  )
  // const utils = require('@/utils/utils')
  export default {
    name: 'BarChart',
    components: { Bar },
    props: {
      chartId: {
        type: String,
        default: 'bar-chart',
      },
      datasetIdKey: {
        type: String,
        default: 'label',
      },
      width: {
        type: Number,
        default: 100,
      },
      height: {
        type: Number,
        default: 50,
      },
      cssClasses: {
        default: '',
        type: String,
      },
      styles: {
        type: Object,
        default: () => {},
      },
      plugins: {
        type: Array,
        default: () => [],
      },
    },
    setup() {
      const data = reactive({
        chartData: {
          labels: [
            '水星',
            '金星',
            '地球',
            '火星',
            '木星',
            '土星',
            '天王星',
            '海王星',
          ],
          datasets: [
            {
              label: '行星卫星数量',
              data: [0, 0, 1, 2, 79, 82, 27, 14],
              backgroundColor: '#ffa0b4',
              borderColor: '#ff6384',
              borderWidth: 3,
              borderRadius: 5,
              borderSkipped: false,
            },
            {
              label: '太阳系行星质量 (相对于太阳 x 10^-6)',
              data: [
                -16.6,
                -208.1,
                -300.3,
                123,
                954.792,
                685.886,
                243.662,
                201.514,
              ],
              backgroundColor: '#9ad0f5',
              borderColor: '#36a2eb',
              borderWidth: 3,
            },
          ],
        },
        chartOptions: {
          responsive: true,
          plugins: {
            legend: {
              position: 'top',
            },
            title: {
              display: true,
              text: 'Chart.js Bar Chart',
            },
          },
        },
      })
      const handledetailpeizhi = () => {
        data.chartData.datasets = [
          {
            label: '行星卫星数量',
            data: [
              -16.6,
              -208.1,
              -300.3,
              123,
              954.792,
              685.886,
              243.662,
              201.514,
            ],
            backgroundColor: '#ffa0b4',
            borderColor: '#ff6384',
            borderWidth: 3,
            borderRadius: 5,
            borderSkipped: false,
          },
          {
            label: '太阳系行星质量 (相对于太阳 x 10^-6)',
            data: [0, 0, 1, 2, 79, 82, 27, 14],
            backgroundColor: '#9ad0f5',
            borderColor: '#36a2eb',
            borderWidth: 3,
          },
        ]
      }

      return {
        ...toRefs(data),
        handledetailpeizhi,
      }
    },
</script>

在这里插入图片描述
在这里插入图片描述

  • 13
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Webpack是一个现代的前端构建工具,它能够将多个模块打包成一个或多个最终的输出文件,例如JavaScript、样式文件、图片等。Vue是一个流行的JavaScript框架,用于构建用户界面。Vue可以配合Webpack一起使用,通过Vue Loader插件将Vue组件编译成JavaScript代码,并将其打包到最终的输出文件中。 Chart.js是一个用于创建各种常见图表JavaScript库。它提供了简单易用的API,允许开发人员在网页中创建交互式和动态的图表Chart.js可以很容易地与Vue和Webpack集成,以提供更灵活和强大的数据可视化功能。 使用Webpack和Vue的组合,我们可以在Vue应用中轻松地集成Chart.js。首先,我们可以使用Webpack配置文件将Chart.js库引入到项目中。然后,通过Vue组件化开发方式,创建一个图表组件,将Chart.js提供的API用于图表的绘制和更新。最后,通过Webpack的打包功能,将Vue应用和Chart.js集成到最终的输出文件中。 这种组合的好处是,我们可以利用Webpack的模块化和打包功能,将Vue组件Chart.js库中的所有依赖文件打包到一个或多个输出文件中,使得我们的应用更加高效和可维护。同时,通过Vue的响应式特性,我们可以轻松地在数据发生变化时更新图表,从而实现动态展示和交互。 总结起来,Webpack、VueChart.js是三个非常有用的前端工具库,它们的组合可以提供强大的构建、开发和数据可视化能力,使得我们能够更好地开发现代化的前端应用程序。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值