0

0

javascript如何创建数据可视化与图表【教程】

夢幻星辰

夢幻星辰

发布时间:2026-01-31 16:12:30

|

962人浏览过

|

来源于php中文网

原创

JavaScript无内置图表功能,需用第三方库;Chart.js(v3.9.1)最易入门,注意DOM加载和canvas存在性;ECharts适合复杂交互但依赖容器尺寸;D3需理解数据驱动DOM本质;导出图片时字体丢失须针对性处理。

javascript如何创建数据可视化与图表【教程】

JavaScript 本身不内置图表功能,必须借助第三方库;选错库或初始化方式错误,会导致 chart is not defined、空白画布、数据不渲染等常见问题。

用 Chart.js 快速画柱状图(最轻量入门方案)

Chart.js 是最易上手的选项,CDN 引入即可用,不需要构建工具。但要注意版本差异:v4 要求显式注册控制器和元素,v3 可直接用;新手建议锁定 v3.9.1 避免配置踩坑。

关键步骤:

  • 在 HTML 中放一个
  • 引入 Chart.js v3 CDN:
  • JS 中确保 DOM 加载完成后再初始化:new Chart(document.getElementById('myChart'), { type: 'bar', data: { labels: ['A','B'], datasets: [{ data: [10,20] }] });

漏掉 document.getElementById 或 canvas 不存在,会报 Cannot read properties of null

立即学习Java免费学习笔记(深入)”;

用 ECharts 实现带交互的地图与时间轴联动

ECharts 更适合复杂场景(如地理热力图 + 时间滑块),但它的初始化依赖 DOM 容器宽高——如果容器是 display: none 或父元素未设尺寸,图表会渲染失败且无报错。

实操要点:

  • 容器必须有明确宽高(CSS 中写死或 JS 动态设置 style.width/style.height
  • 地图需单独加载 JSON 文件:echarts.registerMap('china', chinaJson),不能直接传 URL
  • 时间轴联动靠 option.timeline + echarts.connect(),多个实例需用同一 DOM 元素或显式绑定

常见错误:setOption is not a function 多因 echarts.init() 返回值被忽略,或重复 init 同一容器。

PHP Apache和MySQL 网页开发初步
PHP Apache和MySQL 网页开发初步

本书全面介绍PHP脚本语言和MySOL数据库这两种目前最流行的开源软件,主要包括PHP和MySQL基本概念、PHP扩展与应用库、日期和时间功能、PHP数据对象扩展、PHP的mysqli扩展、MySQL 5的存储例程、解发器和视图等。本书帮助读者学习PHP编程语言和MySQL数据库服务器的最佳实践,了解如何创建数据库驱动的动态Web应用程序。

下载

避免 D3.js 初学者的三个典型卡点

D3 不是图表库,而是数据驱动 DOM 的底层工具;想“画个折线图”却陷入选择器、比例尺、enter/update/exit 循环中,是新手最常发生的脱节。

真正要用 D3 做可视化,得先确认:

  • 是否真的需要自定义渲染逻辑?比如 SVG 动画控制、非标准坐标系、流式数据重绘
  • 是否已手动创建 并正确设置 viewBox 和尺寸属性
  • 是否混淆了 d3.scaleLinear() 的 domain/range:domain 是原始数据范围(如 [0, 100]),range 是像素位置(如 [0, width]),反了就全图压扁或倒置

用 D3 加载 CSV 后没显示数据?大概率是 .data() 后没跟 .enter().append(),或者没调用 selection.join()

导出图表为图片时字体丢失或模糊

Canvas 导出(toDataURL())和 SVG 转 PNG(如 canvg)都容易出这问题——尤其是中文或自定义字体。

解决方案取决于库:

  • Chart.js:确保字体在 options.plugins.legend.labels.fontFamily 中声明,且页面 CSS 已加载对应字体文件
  • ECharts:启用 renderer: 'svg' 再转 PNG,比 canvas 渲染更保真;导出前调用 chart.setOption({ textStyle: { fontFamily: 'sans-serif' } }) 避免系统找不到字体
  • D3:所有文字必须用 标签而非 HTML
    ,且 font-family 要写成内联样式或通过 CSS 类预加载

    最隐蔽的问题:某些字体(如思源黑体)需显式声明 @font-face 并 wait for document.fonts.load() 才能可靠导出。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

420

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

536

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

312

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

77

2025.09.10

ECharts是什么
ECharts是什么

ECharts是基于JavaScript的开源可视化库,能够帮助开发者轻松地实现各种复杂的数据可视化效果,提供了丰富的图表类型和交互功能。本专题为大家提供ECharts是什么的相关的文章、下载、课程内容,供大家免费下载体验。

272

2023.08.04

echarts自适应大小设置
echarts自适应大小设置

使用ECharts的自适应大小设置可以使图表能够根据不同屏幕尺寸和设备进行自适应。一种是使用resize事件,在图表容器大小改变时重新渲染图表;另一种是使用CSS样式,通过设置图表容器的宽度和高度为百分比值,使图表容器根据父元素的大小进行自适应。根据实际需求选择合适的方法,可以使图表在不同设备上都能够良好地显示和交互 。

466

2023.09.13

c语言中null和NULL的区别
c语言中null和NULL的区别

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

237

2023.09.22

java中null的用法
java中null的用法

在Java中,null表示一个引用类型的变量不指向任何对象。可以将null赋值给任何引用类型的变量,包括类、接口、数组、字符串等。想了解更多null的相关内容,可以阅读本专题下面的文章。

459

2024.03.01

2026赚钱平台入口大全
2026赚钱平台入口大全

2026年最新赚钱平台入口汇总,涵盖任务众包、内容创作、电商运营、技能变现等多类正规渠道,助你轻松开启副业增收之路。阅读专题下面的文章了解更多详细内容。

54

2026.01.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Sass 教程
Sass 教程

共14课时 | 0.8万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3.1万人学习

CSS教程
CSS教程

共754课时 | 25.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号