javaScript数据可视化

article/2025/10/13 1:06:53

文章目录

  • canvas画布
  • 介绍
    • 绘制线段
      • 起始点设置
      • 其他点设置(可以有多个)
      • 划线方法
    • 属性
      • 填充
      • 线段颜色
      • 线段宽度
      • 线段例子
    • 绘制矩形
      • 第一种方式:
      • 第二种方式
      • 矩形例子
    • 绘制圆形
      • 圆形例子
    • 清除画布
      • 清除例子
    • 绘制文字
      • 属性
  • svg
    • 介绍:
    • 基本的svg元素
    • 例子
  • echarts
    • 下载
    • 引入
    • 基本使用
    • 展示多个图形
    • 一个容器展示多个图形
    • dataset与encode
    • Echarts:组件
      • 组件介绍
      • 组件实例
    • echarts:坐标系
      • 单坐标
      • 双坐标系
      • 多坐标系
      • 一个坐标系:散点图例子
      • 双坐标系例子

canvas画布

  1. HTML5中新增的一个特性,双闭合标签
  2. 默认宽高300*150
  3. 浏览器认为canvas标签是一张图片
  4. 给canvas画布添加文本内容没有任何意义
  5. 给canvas标签添加子节点也没有任何意义
  6. 想操作canvas画布:画布当中绘制图形、显示文字 都需要通过js完成
  7. canvas标签的w|h需要通过canvas标签属性width|height设置(如果通过样式设置会将坐标轴的xy变化 导致绘画的图形变化)

介绍

绘制线段

起始点设置

moveTo(x,y):把路径移动到画布中的指定点,不创建线条

其他点设置(可以有多个)

lineTo(x,y):添加一个新点,然后再画布中创建该点到最后指定点的线条

划线方法

stroke():起点–>其他店—>最终点

closePath():起始点连接终点

属性

填充

fillStyle=‘color’ 颜色设置

fill() 填充

线段颜色

strokeStyle=‘color’

线段宽度

lineWidth=‘20’

线段例子

// 切记不能通过样式去设置画布的宽度与高度
<canvas height:'500' width:'500'></canvas>
//canvas标签任何操作务必通过JS完成
//通过JS当中“笔”去完成
let canvas = document.querySelector('canvas')
//获取画布的笔{上下文}
let ctx = canvas.getContext('2d');
//绘制线段:绘制线段的起点的设置
ctx.moveTo(100,100)
//其他点的设置
ctx.lineTo(100,200)
ctx.lineTo(200,100)
//设置图形的填充的颜色
ctx.fillStyle='red'
ctx.fill()
//设置线段的颜色
ctx.strokeStyle='blue'
//设置线段的宽度
ctx.lineWidth='20'
//设置起点与终点连接
ctx.closePath()
//stroke方法绘制线段
ctx.stroke()

绘制矩形

第一种方式:

strokeRect(x,y,width,height)

x:距离x轴的距离

y:距离y轴的距离

width、height:矩形的长宽

(没有办法设置填充的颜色)

第二种方式

fillRect(x,y,width,height)

与第一种相比 带填充颜色的矩形 默认是黑色

填充颜色可以替换 (fillStyle=‘color’)

但是需要在fillRect方式之前

矩形例子

//获取dom对象
let canvas = document.querySelector('canvas')
//获取上下文
let ctx = canvas.getContext('2d')
//绘制矩形第一种方式:参数x,y,w,h
//这种的矩形没有办法设置填充颜色
ctx.strokeRect(100,200,100,200);
//第二种方法绘制矩形
//填充颜色可以替换
//绘制图形之前设置填充颜色
ctx.fillStyle='skyblue'
ctx.fill()//可以不写
ctx.fillRect(300,200,100,200)

绘制圆形

arc(x,y,radius,starAngle,endAngle,anticlockwise)

x:圆心x的坐标

y:圆心y的坐标

radius:半径

starAngle:开始角度

endAngle:结束角度

anticlockwise:是否逆时针绘制

圆形例子

//获取dom
let canvas = document.querySelector('canvas')
//获取上下文
let ctx = canvas.getContext('2d')
//绘制圆形
ctx.beginPath();
//绘制圆形的方法:xy,r,起始弧度,结束的弧度,是否逆时针
ctx.arc(100,100,50,0,2*Math.PI,true)
//设置填充颜色
ctx.fillStyle='red'
ctx.fill()
//绘制圆形
ctx.stroke()//绘制一个圆   
//2 派 弧 = 360 
//所以1弧大约等于57  
ctx.arc(200,200,50,0,1,false)
ctx.stroke()

清除画布

clearRect(x,y,width,height):

x:离x轴的距离

y:离y轴的距离

width:清除的宽

height:清除的高

清除例子

//获取dom对象
let canvas = document.querySelector('canvas')
//获取上下文
let ctx = canvas.getContext('2d')
//绘制矩形
ctx.fillRect(100,200,100,200)
//清除整个画布(设置的画布长宽400 600)
ctx.clearRect(0,0,600,400)

绘制文字

fillText(‘内容’,x,y)

属性

font=‘20px 微软雅黑’ 大小与字体


svg

介绍:

svg是一种基于xml的图像文件格式,它的英文全称为Scalable Vector Graphics

意味可缩放的矢量图形

基本的svg元素

  • svg包裹并定义整个矢量图形。svg标签之于矢量图就如同标签之于一个web界面
  • 创建一条直线
  • 创建折线
  • 创建矩形
  • 创建圆
  • 创建园和椭圆
  • 创建多边形
  • 通过指定点以及点和点之间的线来创建任意形状

例子

//svg双闭合标签:默认宽度与高度300*150 svg绘制图形务必在svg标签内
//与canvas不同的是svg可以使用css来改变大小等
<svg>//绘制直线//x1 y1 第一个点的坐标 x2 y2第二个点的坐标 stroke 线的颜色//stroke-width=‘’ 线的宽度<line x1='100' y1='100' x2='200' y2='200' stroke='red'></line>//绘制折线//points: x1 y1,x2 y2,x3 y3.....  //fill-opacity='0' 设置颜色的透明度  不填充颜色  因为默认是填充黑色//stroke='color' 改变颜色<polyline fill-opacity='0' stroke='color' points='300 300,50 100,120 400></polyine>//绘制矩形//fill:填充的颜色<rect x='' y='' width='' height='' fill=''></rect>//绘制圆形//cx cy圆心坐标//r 半径//style  stroke: 线条颜色 fill 填充颜色 等都需要写在style里面<circle cx='' cy='' r='' style=''>//多边形  和折现差不多<polygon points='' >//任意图形M 移动到初始位置L 画线Z 将结束和开始点闭合<path d='M x0 y0L x1 y1L x2 y2L x3 y3Z'></path>
</svg>

echarts

下载

  • 在 https://www.jsdelivr.com/package/npm/echarts 选择 dist/echarts.js,点击并保存为 echarts.js 文件。
  • 在boot cdn中找在线链接

引入

    <!-- 引入刚刚下载的 ECharts 文件 --><script src="echarts.js"></script>或者链接vue中:import * as echarts from 'echarts'

基本使用

//基于准备好的DOM初始化echarts实例
let dom = document.querySelector('div')
//创建echarts实例
let mycharts = echarts.init(dom)
//指定图标的配置项与数据
mycharts.setOption({//图标的标题title:{//大标题text:'数据可视化',//子标题subtext:'echarts基本使用',//主标题的颜色textStyle:{color:''},//设置标题的位置left:center},//x轴的配置项xAxis:{//数据data:['衣服','直播','游戏','电影']},//y轴的配置项yAxis:{//显示y轴的线axisLine:{show:true},//显示y轴的刻度axisTick:{show:true}},//系列的设置:绘制什么样类型的图形,数据的展示在这里设置series:[{//图标类型的设置type:'bar' //柱状图bar  折线图line pie饼图//图标的数据data:[10,20,30,40]}]
})

展示多个图形

建立多个dom对象 创建多个echarts实例 以及多个图形的配置

一个容器展示多个图形

series:[] 里多写对象

dataset与encode

echarts 4.0新特性

encode : 可以设置data的哪个维度被编码成什么

let  data=[
['衣服',11,23,'x',30]
['直播',14,25,'y',40]
['游戏',16,21,'z',50]
['电影',18,22,'t',60]
]
let dom = document.querySelect('.e1')
let mycharts = echarts.init(dom)
mycharts.setOption({//设置字符集datasete:{//数据源source:data},xAxis:{    data:['衣服','直播','游戏','电影']},yAxis:{},series:[{//饼图type:'pie',//大小width:150,height:150,//位置left:150top:100//半径radius:25//data:[]  有了数据源之后就不用写data了encode:{//饼图旁边的文字itemName:3,  //data中索引为3的value:4     //data中索引为4的}}{//折线图type:'line',color:'pink'encode:{y:2//就是使用data中索引值为2的数据:23,21,25,22}},{//柱状图type:'bar',color:'red',encode:{y:1 //就是使用data中索引值为1的数据:11,14,16,18}}]
})

Echarts:组件

除了绘图之外其他部分,都可抽象为【组件】。例如:xAxis、yAxis、grid(直角坐标系底板)、angleAxis(极坐标系角度轴)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W1tuAWcD-1664337516941)(attachment:d498a64625d5581408002da57eb9f554)]

组件介绍

  • 系列切换组件:legend
  • 工具栏组件(下载,缩放等):toolbox
  • 提示框组件:tooltip
  • 观看某个区域的(调节x轴):dataZoom
  • 调整布局:grid

组件实例

let dom = document.querySelector('div')
let mycharts = echarts.init(dom)mycharts.setOptiton({title:{text:"echarts组件"},xAxis:{data:['游戏','电影','直播','娱乐']},yAxis:{},series:[{name:'柱状图',tyoe:'bar',data:[20,30,40,50]},{name:'折线图',type:'line',data:[30,40,50,60]}],//提示框组件tooltip:{//提示框文字颜色textStyle:{color:'red'}},//图例组件:展示不同的图标,系列切换legend:{data:['柱状图','折线图']},//工具栏组件toolbox:{}//
})

echarts:坐标系

单坐标

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RwpGAQiV-1664337516943)(attachment:712c61f8041ccdf3a4c04b9680516a5b)]

双坐标系

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2jP7voIQ-1664337516943)(attachment:a755876311fbdb8f1acbe6c96e841194)]

多坐标系

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OADHZqpf-1664337516944)(attachment:f2a3a792f57167729491b718d9b5d9be)]

一个坐标系:散点图例子

let dom = document.querySelector('div')
let mycharts =  echarts.init(dom)mycharts.setOption({
title:{text:'散点图'},
//x轴
xAxis:{//合理化散点图type:'category'
},
//y轴
yAxis:{},
series:{//散点图的类型
type:'scatter',
//散点图的数据
data:[[10,20],[2,4],[14,53]]
}})

双坐标系例子

let dom =  document.querySelector('div')
let mycharts= echarts.init(dom)mycharts.setOption({title:{text:'双坐标'},xAxis:{data:['游戏','直播','经济','娱乐']},yAxis:[
{//显示y轴的线axisLine:{show:true},//显示Y轴的刻度axisTick:{show:true},
},{//显示y轴的线axisLine:{show:true},//显示Y轴的刻度axisTick:{show:true},
}],//如果要两个y轴那么就要将y轴改为数组series:[{type:'line',data:[10,20,30,40],yAxisIndex:0//用的是y轴数组里的哪一个索引},{type:'bar',data:[10,20,30,50]},yAxisIndex:1//用的是y轴数组里的哪一个索引],})

http://chatgpt.dhexx.cn/article/KdP9oUAl.shtml

相关文章

Python交互式数据分析报告框架:Dash

译者序 原文于2017年6月21日发布&#xff0c;时过半载&#xff0c;将这篇既不是教程&#xff0c;也不是新闻的产品发布稿做了一番翻译&#xff0c;为何&#xff1f;只因去年下半年的时候&#xff0c;用R语言的博哥和龙少有Shiny这样的框架可以开发交互式整合Web数据分析报告&am…

【数据可视化】免费开源BI工具 DataEase 之血缘关系分析

近期&#xff0c;DataEase 发布的版本 V1.8 版本中&#xff0c;在系统管理模块新增了血缘分析功能&#xff0c;可以支持对数据源、数据集、仪表板做关联分析&#xff0c;支持按表格查看和按关系图查看&#xff0c;并且在删除数据源、数据集时&#xff0c;也支持查看对应的血缘分…

数据分析与数据可视化的完成,需要了解一下这四款JS库

四款出色的JavaScript库&#xff0c;帮助大家更为轻松地完成数据分析与可视化工作&#xff0c;具体如下&#xff1a; Data-Driven-Documents (D3.js) 在讨论JavaScript数据分析时忽略掉Data-Driven-Documents (D3)&#xff0c;就如同在谈论微软时忽略掉其操作系统 样。 Data-D…

数据挖掘之关联分析(实验展示以及源代码)

数据挖掘之关联分析 算法实现&#xff1a;Apriori算法和FP-growth 算法源代码 简单描述下&#xff0c;关联分析概念 关联分析概念主要参考下面的博文 原文&#xff1a;https://blog.csdn.net/qq_40587575/article/details/81022350 关联分析是从大量数据中发现项集之间有趣的…

【数据分析入门】python数据分析-探索性数据分析之多因子与对比分析可视化

文章目录 多因子与对比分析可视化理论基础假设检验与方差检验假设检验方差检验 相关系数:皮尔逊、斯皮尔曼回归:线性回归PCA与奇异值分解 代码实践交叉分析分组分析相关分析因子分析 总结代码实现 相关性线性回归PCA注意&#xff1a;sklearn中pca用的方法是奇异值分解的方法&am…

数据分析系列之挖掘建模

经过数据探索与数据预处理,得到了可以直接建模的数据,根据挖掘目标和数据形式可以建立分类与预测,聚类分析,关联规则,时序模式和偏差检测等模型,帮助企业提取数据中的商业价值. 分类与预测 对于之前的背景假设,餐饮企业会经常遇到如下问题: 如何基于菜品历史销售情况,以及节…

【大数据分析与挖掘】挖掘建模之关联分析

文章目录 一、关联规则1.1 常用的关联规则算法1.2 Apriori算法介绍1.2.1 关联规则与频繁项集1.2.2 Apriori算法的思想与性质1.2.3 Apriori算法的实现的两个过程1.2.4 Apriori算法的实现案例 一、关联规则 关联规则分析也成为购物篮分析&#xff0c;最早是为了发现超市销售数据…

Hands-on-data-analysis 动手数据分析

动手数据分析笔记 第一章 第一节 数据载入及初步观察 数据载入 df pd.read_csv(file_path)df2 pd.read_table(file_path)read_csv 函数 见CSDN 博客&#xff1a; https://blog.csdn.net/weixin_39175124/article/details/79434022 问&#xff1a;read_csv 和 read_table …

python数据分析-因子分析(转载)

python数据分析-因子分析&#xff08;转载&#xff09; &#xff08;获取更多知识&#xff0c;前往前往我的wx ————公z号 &#xff08;程式解说&#xff09; 原文来自python数据分析-因子分析

ThreeJs 数据可视化学习扫盲

一&#xff1a;前言 数据可视化是一个跨领域的行业&#xff0c;其中包含了图形学、数学、视觉传达等专业领域。 下图罗列出了一个简单的学习方向。 二&#xff1a;可视化方案以及学习路线 目前采用的是比较成熟&#xff0c;社区活跃度更高的Three.js&#xff0c;它是一个开源…

数据处理以及Hive数据分析

数据处理以及Hive数据分析 一、pandas进行数据预处理【1】待处理的一部分数据【2】原始数据文件的格式说明【3】数据预处理要求【4】 处理完成的数据字段说明【5】 实验方法使用pandas进行数据预处理 【6】解析题意【7】代码展示&#xff08;1&#xff09;读取文件&#xff08;…

Python交互式数据分析报告框架~Dash介绍

原文作者&#xff1a;Plotly,Chris Pamer 原文链接&#xff1a; https://link.jianshu.com/?thttps%3A%2F%2Fmedium.com%2F%40plotlygraphs%2Fintroducing-dash-5ecf7191b503 译者序&#xff1a;原文于2017年6月21日发布&#xff0c;时过半载&#xff0c;将这篇既不是教程…

CESI: Canonicalizing Open Knowledge Bases using Embeddings and Side Information

开放性知识库的规范化&#xff08;个人理解&#xff1a;这里的规范化实际上就是将相同语义的实体或关系聚集在一起&#xff0c;从而表示一个实体或关系&#xff09;&#xff0c;主要是OPENie提取的过程中没有进行区分&#xff0c;最近的研究发现&#xff0c;开放KBS的规范化实际…

计算机一级仿宋gb2312,仿宋gb2312字体

一般情况下&#xff0c;这款软件在试用的过程可能还有点小问题&#xff0c;但是正所谓瑕不掩瑜&#xff0c;相信用不了多久&#xff0c;只要程序猿给力点&#xff0c;这种小小的反馈不爽就可以解决。 仿宋gb2312字体字体简介 仿宋_GB2312字体是印刷字体的一种 &#xff0c;仿照…

Supervisor部署(离线部署需要提前下载部署包)

1.软件准备 下载tar包&#xff1a;wget https://pypi.python.org/packages/source/s/supervisor/supervisor-3.1.3.tar.gz 解压&#xff1a;tar -xvf supervisor-3.1.3.tar.gz 进入解压包&#xff1a;cd supervisor-3.1.3 开始安装&#xff1a;python setup.py install 下载me…

Docker 学习之 Docker 容器数据卷

容器数据卷 什么是容器数据卷 docker 理念回顾 将应用和环境打包成一个镜像&#xff01; 问题&#xff1a;数据&#xff1f;如果数据都在容器中&#xff0c;那么我们删除容器&#xff0c;数据就会丢失&#xff01;需求&#xff1a;数据可以持久化&#xff01; 容器之前可以…

Supervisor 安装与配置

文章目录 Supervisor 安装与配置一、介绍二、名词释义三、Supervisor 安装三、Supervisor 配置四、启动控制终端五、注册为系统服务六、管理界面1、管理界面的弊端 Supervisor 安装与配置 一、介绍 ​ Supervisor 是用Python开发的一个 client/server 服务&#xff0c;是Linu…

使用Cesi+Supervisor实现进程管理

使用CesiSupervisor实现进程管理 相信很多的运维小伙伴都是饱受进程丢失的痛苦&#xff0c;最怕半夜被手机吵醒&#xff0c;那一定是经理想你 不管进程是前台运行还是后台静默运行&#xff0c;我们都需要能监控其进程状态。 原因有三&#xff1a; 一&#xff0c;在意外结束时…

echarts学习笔记1

可视化面板介绍 ​ 应对现在数据可视化的趋势&#xff0c;越来越多企业需要在很多场景(营销数据&#xff0c;生产数据&#xff0c;用户数据)下使用&#xff0c;可视化图表来展示体现数据&#xff0c;让数据更加直观&#xff0c;数据特点更加突出。 [外链图片转存失败,源站可能…

supervisor集群管理

1.介绍 Supervisor是一个进程管理工具&#xff0c;就是有一个进程需要每时每刻不断的运行&#xff0c;但是这个进程又有可能由于各种原因有可能停止运行。supervisor官网&#xff1a;http://www.supervisord.org/ 当进程停止运行的时候我们希望能自动重新启动&#xff0c;Super…