如何在 Vue 中使用 Chart.js - 手把手教你搭可视化数据图表

简介: 使用 Chart.js 在 Vue 搭建的后台管理工具里添加炫酷的图表,是所有数据展示类后台必备的功能,本教程手把手教大家如何在 Vue 中加入,一个基于 JavaScript 的开源可视化图表库,Chart.js 涵盖了常见的数据图表类型。

如何在 Vue 中使用 Chart.js - 手把手教你搭可视化数据图表

本文首发:《如何在 Vue 中使用 Chart.js - 手把手教你搭可视化数据图表

使用 Chart.js 在 Vue 搭建的后台管理工具里添加炫酷的图表,是所有数据展示类后台必备的功能,本教程手把手教大家如何在 Vue 中加入 Chart.js ,一个基于 JavaScript 的开源可视化图表库,Chart.js 涵盖了常见的数据图表类型。

当然,如果你对前端不是很熟悉,又想快速搭建数据图表看板,那么推荐使用卡拉云,卡拉云是新一代低代码卡发工具,无需懂任何前端技术,仅需拖拽即可快速生成「数据图表」,1 分钟搭建属于你自己的数据图表展示管理后台。详见本文文末。

最终完成效果,我们在 Vue 中引入 Chart.js 组件,显示太阳系行星的信息,包含两组数据,大家顺便学习如何做多数据展示图表。

vue-chartjs-tutorial-bar

我们开始吧。

第一步 - 配置 Vue 环境

使用 npm 安装 Vue 脚手架 vue-cli

npm install -g @vue/cli

vue-setup.

然后我们创建一个 Vue 项目 kalacloud-vue-chartjs

vue create kalacloud-vue-chartjs

cd 到我们刚刚新建的 vue 项目目录中

 cd kalacloud-vue-chartjs

最后,安装 Chart.js 组件:

npm install chart.js@2.9.4

扩展阅读:《订单管理系统(OMS)搭建实战 - 低代码拖拽定制订单管理系统

第 2 步 - 创建图表组件

接下来我来教大家做两组交替显示的数据图表,可以显示数据集。

展示图表包含两组数据:

  • 太阳系每颗行星的卫星数据
  • 太阳系每颗行星的质量

我们用太阳系行星的卫星数及质量作为展示数据,这样可以更好的演示如何在图表中做多组数据的展示。

首先,我们在组件(components)目录下,创建一个新文件:PlanetChart.vue 我们来一起写一个行星数据图表组件。

文件位置:src/components/PlanetChart.vue

<template>
  <div>
    <canvas id="planet-chart"></canvas>
  </div>
</template>

<script>
import Chart from 'chart.js'

export default {
  name: 'PlanetChart'
}
</script>

接下来,我们修改 App.vue 文件,把我们刚刚写的 PlanetChart.vue 写到启动页。

文件位置:src/App.vue

<template>
  <div id="app">
    <PlanetChart/>
  </div>
</template>

<script>
import PlanetChart from './components/PlanetChart.vue'

export default {
  name: 'App',
  components: {
    PlanetChart
  }
}
</script>

为了保证你与本教程代码的一致性,请直接替换 App.vue 中全部代码。

扩展阅读:《最好用的 7 款 Vue admin 后台管理框架测评

第 3 步 - 创建图表数据

使用 Chart.js 创建图表,整体格式如下:

const ctx = document.getElementById('example');
const exampleChart = new Chart(ctx, {
  type: '',
  data: [],
  options: {},
});

接着我们创建一个 js 文件(planet-data.js),我们把所有行星相关的数据信息存在这个文件中,以下代码包含行星卫星数,行星质量等。

文件位置:src/planet-data.js

export const planetChartData = {
  type: "line",
  data: {
    labels: ["水星", "金星", "地球", "火星", "木星", "土星", "天王星", "海王星"],
    datasets: [
      {
        label: "行星卫星数量",
        data: [0, 0, 1, 2, 79, 82, 27, 14],
        backgroundColor: "rgba(54,73,93,.5)",
        borderColor: "#36495d",
        borderWidth: 3
      },
      {
        label: "太阳系行星质量 (相对于太阳 x 10^-6)",
        data: [16.6, 208.1, 300.3, 123, 954.792, 685.886, 243.662, 201.514],
        backgroundColor: "rgba(71, 183,132,.5)",
        borderColor: "#47b784",
        borderWidth: 3
      }
    ]
  },
  options: {
    responsive: true,
    lineTension: 1,
    scales: {
      yAxes: [
        {
          ticks: {
            beginAtZero: true,
            padding: 25
          }
        }
      ]
    }
  }
};

export default planetChartData;
  • 我们将图表的类型(type)设置成 line
  • 数据将有两个数组集组成
  • 定义了两个数据在图表中展示的颜色样式

特别提示:大家还可以参考 Chart.js 开发文档 ,各种图表样式应有尽有,比如条形图、折线图、饼状图、雷达图等。

我们把数据单独写在一个 JS 中,这样方便我们后期维护,接着我们把这个数据 JS 导入到 PlanetChart.vue 中。

文件位置:src/components/PlanetChart.vue

<script>
import Chart from 'chart.js'
import planetChartData from '../planet-data.js'

export default {
  name: 'PlanetChart'
}
</script>

下一步,我们将图表数据存储在 data() 里。

文件位置:src/components/PlanetChart.vue

<script>
import Chart from 'chart.js'
import planetChartData from '../planet-data.js'

export default {
  name: 'PlanetChart',
  data() {
    return {
      planetChartData: planetChartData
    }
  }
}
</script>

到这里,我们已经配置了 Chart.js 以及给图表配置好了显示数据,并把数据导入到图表组件(PlaneChart.vue)里了。

最后一步,我们打开 PlanetChart.vue 在 mounted() 创建图表。

文件位置:src/components/PlanetChart.vue

<script>
import Chart from 'chart.js'
import planetChartData from '../planet-data.js'

export default {
  name: 'PlanetChart',
  data() {
    return {
      planetChartData: planetChartData
    }
  },
  mounted() {
    const ctx = document.getElementById('planet-chart');
    new Chart(ctx, this.planetChartData);
  }
}
</script>

到这里 Vue Chart.js 图表已经配置完成,我们运行一下 Vue 看看效果。

npm run serve

我们在浏览器中打开,图表样式如下图:

vue-chartjs-tutorial-line

我们可以看到图表中显示了两个折线图,一个是每颗行星的卫星数,另一个是每颗行星的质量。

扩展阅读:《最好用的 7 款 Vue 富文本编辑器

第 4 步 - 配置混合图表

Chart.js 还支持混合图表显示,本教程会在这一节教大家如何配置不同样式的数据,如何显示在同一个象限中。打开前文编辑的planet-data.js 文件,我们把显示类型改为 bar

文件位置:src/planet-data.js

export const planetChartData = {
  type: "bar",
  data: { ... },
  options: { ... }
};

export default planetChartData;

使用您的代码编辑器重新访问。修改type图表数据的属性并将其更改为bar.

我们把其中一个图表从折线图改成条形图,这时,我们需要对每组数据都指定 type 类型,第一组数据我们用 line,第二组数据我们用 bar

文件位置:src/planet-data.js

export const planetChartData = {
  type: "line",
  data: {
    labels: ["水星", "金星", "地球", "火星", "木星", "土星", "天王星", "海王星"],
    datasets: [
      {
        label: "行星卫星数量",
        type: "line",
        data: [0, 0, 1, 2, 79, 82, 27, 14],
        backgroundColor: "rgba(54,73,93,.5)",
        borderColor: "#36495d",
        borderWidth: 3
      },
      {
        label: "太阳系行星质量 (相对于太阳 x 10^-6)",
        type: "bar",
        data: [16.6, 208.1, 300.3, 123, 954.792, 685.886, 243.662, 201.514],
        backgroundColor: "rgba(71, 183,132,.5)",
        borderColor: "#47b784",
        borderWidth: 3
      }
    ]
  },
  options: { ... }
};

export default planetChartData;

接着我们来打开浏览器,运行 Vue 看看效果:

npm run serve

在浏览器里显示的效果:

vue-chartjs-tutorial-bar

每个行星的卫星数量显示为折线图。每个行星的质量显示为条形图。是不是很炫酷?

[](https://kalacloud.com/blog/vue-chartjs-tutorial/#%E4%BD%BF%E7%94%A8%E5%8D%A1%E6%8B%89%E4%BA%91%E7%9B%B4%E6%8E%A5%E7%94%9F%E6%88%90%E5%9B%BE%E8%A1%A8)使用「卡拉云」直接生成图表

本文介绍了如何在 Vue 中引入 Chart.js 的方法,虽然 Chart.js 已经帮我们节省了很大一部分开发图表的时间,但只要数据稍微复杂,调试Chart.js 的难度就会直线上升。

有没有一种完全不用会前端,一行代码也不用写的方法,生成图表呢?这里推荐你使用卡拉云,卡拉云内置多种样式的图表,仅需鼠标拖拽即可生成,完全不用懂任何前端。

kalacloud-charts

卡拉云是新一代低代码开发工具,免安装部署,可一键接入包括 MySQL 在内的常见数据库及 API。可根据自己的工作流,定制开发。无需繁琐的前端开发,只需要简单拖拽,即可快速搭建企业内部工具。原来三天的开发工作量,使用卡拉云后可缩减至 1 小时,欢迎免费试用卡拉云

扩展阅读:

目录
相关文章
|
1月前
|
缓存 JavaScript UED
Vue3中v-model在处理自定义组件双向数据绑定时有哪些注意事项?
在使用`v-model`处理自定义组件双向数据绑定时,要仔细考虑各种因素,确保数据的准确传递和更新,同时提供良好的用户体验和代码可维护性。通过合理的设计和注意事项的遵循,能够更好地发挥`v-model`的优势,实现高效的双向数据绑定效果。
131 64
|
1月前
|
监控 JavaScript 算法
深度剖析 Vue.js 响应式原理:从数据劫持到视图更新的全流程详解
本文深入解析Vue.js的响应式机制,从数据劫持到视图更新的全过程,详细讲解了其实现原理和运作流程。
|
1月前
|
JavaScript 数据管理 Java
在 Vue 3 中使用 Proxy 实现数据双向绑定的性能如何?
【10月更文挑战第23天】Vue 3中使用Proxy实现数据双向绑定在多个方面都带来了性能的提升,从更高效的响应式追踪、更好的初始化性能、对数组操作的优化到更优的内存管理等,使得Vue 3在处理复杂的应用场景和大量数据时能够更加高效和稳定地运行。
64 1
|
1月前
|
JavaScript 开发者
在 Vue 3 中使用 Proxy 实现数据的双向绑定
【10月更文挑战第23天】Vue 3利用 `Proxy` 实现了数据的双向绑定,无论是使用内置的指令如 `v-model`,还是通过自定义事件或自定义指令,都能够方便地实现数据与视图之间的双向交互,满足不同场景下的开发需求。
65 1
|
1月前
|
数据采集 存储 JavaScript
如何使用Puppeteer和Node.js爬取大学招生数据:入门指南
本文介绍了如何使用Puppeteer和Node.js爬取大学招生数据,并通过代理IP提升爬取的稳定性和效率。Puppeteer作为一个强大的Node.js库,能够模拟真实浏览器访问,支持JavaScript渲染,适合复杂的爬取任务。文章详细讲解了安装Puppeteer、配置代理IP、实现爬虫代码的步骤,并提供了代码示例。此外,还给出了注意事项和优化建议,帮助读者高效地抓取和分析招生数据。
如何使用Puppeteer和Node.js爬取大学招生数据:入门指南
|
1月前
|
JavaScript 前端开发 持续交付
构建现代Web应用:Vue.js与Node.js的完美结合
【10月更文挑战第22天】随着互联网技术的快速发展,Web应用已经成为了人们日常生活和工作的重要组成部分。前端技术和后端技术的不断创新,为Web应用的构建提供了更多可能。在本篇文章中,我们将探讨Vue.js和Node.js这两大热门技术如何完美结合,构建现代Web应用。
42 4
|
2月前
|
API
vue3知识点:响应式数据的判断
vue3知识点:响应式数据的判断
32 3
|
2月前
|
存储 缓存 JavaScript
vue表单案例练习:vue表单创建一行数据及删除数据的实现与理解
vue表单案例练习:vue表单创建一行数据及删除数据的实现与理解
51 2
|
1月前
|
JavaScript 前端开发 开发者
JavaScript框架React vs. Vue:一场性能与易用性的较量
JavaScript框架React vs. Vue:一场性能与易用性的较量
38 0
|
2月前
|
JavaScript 前端开发 应用服务中间件
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
204 0