Menu
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

Chart.js

Chart.js 是一个免费的 JavaScript 库,用于制作基于 HTML 的图表。它是 JavaScript 最简单的可视化库之一,并附带许多内置的图表类型

  • 散点图
  • 折线图
  • 条形图
  • 饼图
  • 环形图
  • 气泡图
  • 面积图
  • 雷达图
  • 组合图

如何使用 Chart.js?

1. 添加一个指向提供 CDN(内容分发网络)的链接

<script
src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.4/Chart.js">
</script>

2. 在 HTML 中你想绘制图表的任何位置添加一个 <canvas>

<canvas id="myChart" style="width:100%;max-width:700px"></canvas>

Canvas 元素必须具有唯一的 ID。

典型的条形图语法

const myChart = new Chart("myChart", {
  type: "bar",
  data: {},
  options: {}
});

典型的折线图语法

const myChart = new Chart("myChart", {
  type: "line",
  data: {},
  options: {}
});

条形图

源代码

const xValues = ["意大利", "法国", "西班牙", "美国", "阿根廷"];
const yValues = [55, 49, 44, 24, 15];
const barColors = ["red", "green","blue","orange","brown"];

new Chart("myChart", {
  type: "bar",
  data: {
    labels: xValues,
    datasets: [{
      backgroundColor: barColors,
      data: yValues
    }]
  },
  options: {...}
});

自己试试 »

只为一个条形图上色

const barColors = ["blue"];

自己试试 »

所有条形图使用相同的颜色

const barColors ="red";

自己试试 »

颜色阴影

const barColors = [
  "rgba(0,0,255,1.0)",
  "rgba(0,0,255,0.8)",
  "rgba(0,0,255,0.6)",
  "rgba(0,0,255,0.4)",
  "rgba(0,0,255,0.2)",
];

自己试试 »

水平条形图

只需将 type 从 "bar" 更改为 "horizontalBar"

type: "horizontalBar",

自己试试 »


饼图

示例

new Chart("myChart", {
  type: "pie",
  data: {
    labels: xValues,
    datasets: [{
      backgroundColor: barColors,
      data: yValues
    }]
  },
  options: {
    title: {
      display: true,
      text: "全球葡萄酒产量"
    }
  }
});

自己试试 »


环形图

只需将 type 从 "pie" 更改为 "doughnut"

type: "doughnut";

自己试试 »


散点图

房价与面积

源代码

const xyValues = [
  {x:50, y:7},
  {x:60, y:8},
  {x:70, y:8},
  {x:80, y:9},
  {x:90, y:9},
  {x:100, y:9},
  {x:110, y:10},
  {x:120, y:11},
  {x:130, y:14},
  {x:140, y:14},
  {x:150, y:15}
];

new Chart("myChart", {
  type: "scatter",
  data: {
    datasets: [{
      pointRadius: 4,
      pointBackgroundColor: "rgba(0,0,255,1)",
      data: xyValues
    }]
  },
  options:{...}
});

自己试试 »



折线图

房价与面积

源代码

const xValues = [50,60,70,80,90,100,110,120,130,140,150];
const yValues = [7,8,8,9,9,9,10,11,14,14,15];

new Chart("myChart", {
  type: "line",
  data: {
    labels: xValues,
    datasets: [{
      backgroundColor:"rgba(0,0,255,1.0)",
      borderColor: "rgba(0,0,255,0.1)",
      data: yValues
    }]
  },
  options:{...}
});

自己试试 »

如果你将 borderColor 设置为零,你可以散点图折线图

borderColor: "rgba(0,0,0,0)",

自己试试 »


多条线

源代码

const xValues = [100,200,300,400,500,600,700,800,900,1000];

new Chart("myChart", {
  type: "line",
  data: {
    labels: xValues,
    datasets: [{
      data: [860,1140,1060,1060,1070,1110,1330,2210,7830,2478],
      borderColor: "red",
      fill: false
    },{
      data: [1600,1700,1700,1900,2000,2700,4000,5000,6000,7000],
      borderColor: "green",
      fill: false
    },{
      data: [300,700,2000,5000,6000,4000,2000,1000,200,100],
      borderColor: "blue",
      fill: false
    }]
  },
  options: {
    legend: {display: false}
  }
});

自己试试 »


线性图

源代码

const xValues = [];
const yValues = [];
generateData("x * 2 + 7", 0, 10, 0.5);

new Chart("myChart", {
  type: "line",
  data: {
    labels: xValues,
    datasets: [{
      fill: false,
      pointRadius: 1,
      borderColor: "rgba(255,0,0,0.5)",
      data: yValues
    }]
  },
  options: {...}
});

function generateData(value, i1, i2, step = 1) {
  for (let x = i1; x <= i2; x += step) {
    yValues.push(eval(value));
    xValues.push(x);
  }
}

自己试试 »


函数图

与线性图相同。只需更改 generateData 参数

generateData("Math.sin(x)", 0, 10, 0.5);

自己试试 »


×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
[email protected]

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:
[email protected]

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.

Copyright 1999-2024 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.