网站标题用什么隔开/网络营销推广外包服务

网站标题用什么隔开,网络营销推广外包服务,网站建设建设公司是干嘛的,江苏建设类高级工程师在那个网站公示前言 Canvas 可以用来创建各种 数据可视化 图表和图形,通过绘制不同的形状、线条和颜色来展示数据的特征和趋势。 数据可视化的基本原理是将数据转化为可视化的图形元素,以便人们更容易理解和分析数据。这涉及到以下几个方面: 数据映射&…

前言

Canvas 可以用来创建各种 数据可视化 图表和图形,通过绘制不同的形状、线条和颜色来展示数据的特征和趋势。

数据可视化的基本原理是将数据转化为可视化的图形元素,以便人们更容易理解和分析数据。这涉及到以下几个方面:

  • 数据映射:将数据值映射到可视化元素的属性上,如位置、大小、颜色等。例如,将数值映射到柱状图的高度、折线图的点坐标或饼图的扇形角度。
  • 视觉编码:选择合适的可视化元素和属性来传达数据的特征。例如,使用不同的颜色来区分不同的数据类别,使用线条的粗细来表示数据的大小。
  • 布局和排版:合理安排可视化元素在画布上的位置,以提高可读性和美观度。例如,在柱状图中保持柱子之间的间距均匀,在折线图中使线条清晰可辨。
  • 交互性:为可视化添加交互功能,如鼠标悬停显示数据值、缩放和平移等,以增强用户对数据的探索和理解。

柱状图

  • 首先,确定数据和图表的尺寸。假设我们有一组数据表示不同类别的数量 Canvas 上绘制柱状图。
  • 然后,计算每个柱子的宽度和间距。如果有 n 个数据点,那么柱子的宽度可以是画布宽度除以数据点数量,再减去一些间距。
  • 接着,根据数据值计算每个柱子的高度。可以将数据值映射到画布的高度范围内,例如,数据值的最大值对应画布的高度,其他数据值按比例缩放。
  • 最后,使用 fillRect() 方法在 Canvas 上绘制每个柱子。可以为不同的柱子设置不同的颜色,以区分不同的数据类别。

请添加图片描述

以下是一个简单的用 Canvas 绘制柱状图的示例代码:

    // 可视化(柱状图)init() {var canvas = document.getElementById('myCanvas')var ctx = canvas.getContext('2d')var data = [100, 200, 150, 250, 220, 140]var width = canvas.widthvar height = canvas.heightvar barWidth = width / data.length - 10 // 柱子宽度,减去一些间距var maxDataValue = Math.max(...data)for (var i = 0; i < data.length; i++) {var barHeight = (data[i] / maxDataValue) * height - 20ctx.fillStyle = '#3e7bfa'ctx.fillRect(i * (barWidth + 10) + 5, height - barHeight, barWidth, barHeight)}},

饼图

  • 首先,确定数据和图表的尺寸。假设我们有一组数据表示不同类别的数量以及相对应的颜色。
  • 然后,计算canvas中心点绘制起始点,确定饼图半径,方便绘制圆形。
  • 接着,根据数据值计算每个数据占比。可以将数据值映射到画布的圆半径范围内,例如,数据值的最大值对应原型占比大小,其他数据值按比例缩放。
  • 最后,使用 arc() 方法在 Canvas 上绘制每个弧度边框。可以为不同的饼图区域设置不同的颜色,以区分不同的数据类别,用fill()填充完成饼图绘制。

请添加图片描述

以下是一个简单的用 Canvas 绘制柱状图的示例代码:

 // 可视化(饼图)init1() {var canvas = document.getElementById('myCanvas1')var ctx = canvas.getContext('2d')var data = [30, 40, 20, 10, 50, 10, 55]var colors = ['#FF5733', '#33FF57', '#3357FF', '#F333FF', '#33FFF5', '#F533FF', '#FF3357']var total = data.reduce((a, b) => a + b, 0)var startAngle = 0for (var i = 0; i < data.length; i++) {var endAngle = startAngle + (data[i] / total) * 2 * Math.PIctx.fillStyle = colors[i] // 不同的颜色表示不同的数据部分ctx.beginPath()ctx.moveTo(canvas.width / 2, canvas.height / 2)ctx.arc(canvas.width / 2, canvas.height / 2, canvas.height / 2 - 20, startAngle, endAngle)ctx.closePath()ctx.fill()ctx.lineWidth = 1 // 边框宽度ctx.strokeStyle = '#fff' // 边框颜色ctx.stroke() // 绘制边框startAngle = endAngle}},

折线图

  • 首先,确定数据和图表的尺寸。假设我们有一组数据表示不同类别的数量Canvas 上绘制折线图起始坐标轴。
  • 然后,计算各个数据点位,绘制数据点。
  • 接着,根据数据值计算每个数据值至下个数据点位置绘制连接线
  • 最后,使用stroke()完成连线

请添加图片描述

  // 可视化(折线图)init2() {var canvas = document.getElementById('myCanvas2')var ctx = canvas.getContext('2d')var data = [0, 40, 20, 10, 50, 10, 55]var padding = 40 // 图表周围的填充var xStep = (canvas.width - 2 * padding) / (data.length - 1) // x轴上每一步的大小var maxY = Math.max(...data) // 数据中的最大值,用于缩放y轴// 绘制坐标轴ctx.beginPath()ctx.moveTo(padding, 0)ctx.lineTo(padding, canvas.height - 20)ctx.lineTo(canvas.width - padding, canvas.height - 20)ctx.stroke()// 绘制数据点for (var i = 0; i < data.length; i++) {var x = padding + i * xStepvar y = canvas.height - 20 - (data[i] / maxY) * (canvas.height - 2 * padding)// 绘制数据点ctx.beginPath()ctx.arc(x, y, 2, 0, 2 * Math.PI)ctx.fillStyle = '#3357FF'ctx.fill()// 绘制连接线if (i > 0) {ctx.beginPath()ctx.moveTo(prevX, prevY)ctx.lineTo(x, y)ctx.strokeStyle = '#3357FF'ctx.lineWidth = 2ctx.stroke()}// 更新上一个点的坐标var prevX = xvar prevY = y}}

到此canvas进阶可视化应用学习结束,道阻且长,行则将至。与诸君共勉。 ⭐️

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/70373.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小米AX3000T 路由器如何开启 SSH 安装 OpenWRT 系统,不需要降级 v1.0.91 (2025)

小米AX3000T 路由器如何开启 SSH 安装 OpenWRT 系统&#xff0c;不需要降级 v1.0.91 &#xff08;2025&#xff09; 本文内容需要你有一定的 Linux 操作基础&#xff0c;最好是程序员那种&#xff0c;英文水平足够用才行。一般人不需要使用这么复杂的路由器操作系统&#xff0c…

python查错误TypeError: bad operand type for unary -: ‘str‘

TypeError: bad operand type for unary -: str​​​ 这个错误表明尝试对一个字符串类型的数据使用一元减号运算符&#xff08;​​-​​&#xff09;&#xff0c;而在 Python 中&#xff0c;一元减号运算符只能用于数值类型&#xff08;如整数、浮点数等&#xff09;&#xf…

搭建Kubernetes (K8s) 集群----Centos系统

前期准备 准备3台Linux虚拟机&#xff08;CentOS系统&#xff09;&#xff0c;参考 https://carry.blog.csdn.net/article/details/144578009https://carry.blog.csdn.net/article/details/144578009搭建Docker环境&#xff0c;参考 https://carry.blog.csdn.net/article/de…

wps中的js开发

严格区分大小写 /*** learn_js Macro*/ function test() {Range(D7).Value2Selection.Value2; // Selection.formula "100" }function Workbook_SheetSelectionChange(Sh, Target) {if(Sh.Name Sheet1) {test();}}function test2() {// 把I4单元格及其周边有数的单…

第3章 3.2 配置系统 .NET Core配置系统

3.2.1 配置系统的基本使用 .NET Core中的配置系统支持非常丰富的配置源&#xff0c;包括文件&#xff08;JSON、XML、INI等&#xff09;、注册表、环境变量、命令行、Azure Key Vault等&#xff0c;配置系统还支持自定义配置源。 用配置系统开发包Microsoft.Extensions.Confi…

第六届计算机信息和大数据应用国际学术会议(CIBDA 2025)

重要信息 大会官网&#xff1a;www.ic-cibda.org&#xff08;了解会议&#xff0c;投稿等&#xff09; 大会时间&#xff1a;2025年3月14-16日 大会地点&#xff1a;中国-武汉 简介 第六届计算机信息和大数据应用&#xff08;CIBDA 2025&#xff09;将于2025年3月14-16日在中国…

Mac M3/M4 本地部署Deepseek并集成vscode

Mac 部署 使用傻瓜集成平台ollama&#xff0c;ollama平台依赖于docker&#xff0c;Mac的M3/M4 因doesn’t have VT-X/AMD-v enabled 所以VB,VM无法使用&#xff0c;导致docker无法启动&#xff0c;需要使用docker的替代品podman&#xff0c; 它完全兼容docker brew install p…

最优化方法-牛顿法

牛顿法 泰勒级数 泰勒级数展开 $$ \begin{aligned} f(x)&\lim\limits_{n\rightarrow \infin}\sum\limits_{i1}n\frac{1}{n!}f{(n)}(x_0)(x-x_0)^n\ &f(x_0)f’(x_0)(x-x_0)\frac{f’(x_0)}{2!}(x-x_0)2\cdots\frac{1}{n!}fn(x_0)(x-x_0)^n\ &\quad~ O\left[(x-x_…

【系统架构】分布式事务模型详解

1. 分布式基础理论 1.1 CAP理论 CAP 理论可以表述为&#xff0c;一个分布式系统最多只能同时满足一致性&#xff08;Consistency&#xff09;、可用性&#xff08;Availability&#xff09;和分区容错性&#xff08;Partition Tolerance&#xff09;这三项中的两项。 一致性是…

「正版软件」PDF Reader - 专业 PDF 编辑阅读工具软件

PDF Reader 轻松查看、编辑、批注、转换、数字签名和管理 PDF 文件&#xff0c;以提高工作效率并充分利用 PDF 文档。 像专业人士一样编辑 PDF 编辑 PDF 文本 轻松添加、删除或修改 PDF 文档中的原始文本以更正错误。自定义文本属性&#xff0c;如颜色、字体大小、样式和粗细。…

在 Mac ARM 架构 (Apple Silicon,例如 M1, M2, M3 芯片) 上使用官方安装包安装 MySQL

在 Mac ARM 架构 (Apple Silicon&#xff0c;例如 M1, M2, M3 芯片) 上使用官方安装包安装 MySQL&#xff0c;步骤与在 Intel Mac 上类似&#xff0c;但需要确保下载的是 ARM 架构兼容的版本。以下是详细的安装步骤&#xff1a; 步骤 1: 下载 MySQL Community Server DMG 安装…

以ChatGPT为例解析大模型背后的技术

目录 1、大模型分类 2、为什么自然语言处理可计算&#xff1f; 2.1、One-hot分类编码&#xff08;传统词表示方法&#xff09; 2.2、词向量 3、Transformer架构 3.1、何为注意力机制&#xff1f; 3.2、注意力机制在 Transformer 模型中有何意义&#xff1f; 3.3、位置编…

【ARM入门指南】一文搞懂什么是ARM

在单片机与嵌入式系统的浩瀚宇宙中&#xff0c;ARM架构犹如一颗耀眼的星辰&#xff0c;持续引领着技术创新的潮流。对于刚刚踏入这一领域的初学者而言&#xff0c;深入了解ARM是迈入嵌入式开发大门的关键一步。ARM&#xff0c;这个名字背后&#xff0c;不仅代表着一家在半导体设…

Http升级为Https - 开发/测试服环境

1.应用场景 主要用于开发/测试服环境将http升级为https, 防止前端web(浏览器)出现Mixed Content报错; 2.学习/操作 1.文档阅读 deepseek 问答; 2.整理输出 报错信息: Mixed Content: The page at <URL> was loaded over HTTPS, but requested an insecure XMLHttpRequ…

使用 AIStor 和 OpenSearch 增强搜索功能

在这篇文章中&#xff0c;我们将探讨搜索&#xff0c;特别是 OpenSearch 如何帮助我们识别模式或查看不断增长的数据中的趋势。例如&#xff0c;如果您正在查看运营数据&#xff0c;如果您的服务似乎是随机的&#xff0c;那么您需要尽可能回溯以识别模式并找出原因。这不仅适用…

Python——生成AIGC图像

文章目录 一、背景介绍 二、效果图展示 三、完整代码 四、分步解释 五、实用建议 1&#xff09;提示词技巧 2&#xff09;性能优化 3&#xff09;常见问题处理 4&#xff09;扩展功能建议 六、注意事项 1. 硬件要求 2. 法律合规 3. 模型安全 一、背景介绍 AIGC&a…

多任务(20250210)

1. 进程的概念 (1) 程序:是一段存放在外存中代码的集合(静态的) (2) 进程:是一个程序动态执行的过程,包括创建、调度、消亡(动态的) 2. 如何实现多任务 Linux中&#xff0c;通过进程、线性实现多任务 3. 进程 正在执行的程序&#xff08;动态&#xff09;&#xff0c;需…

【2025最新版】Chrome谷歌浏览器如何能恢复到之前的旧版本

背景 今天程序突然出了bug&#xff0c;无法自动测试了&#xff0c;显示Chrome版本不匹配&#xff0c;一看&#xff0c;Chrome居然在我已经关闭升级的情况下&#xff0c;又给我升级了&#xff0c;然后就悲剧了&#xff0c;我的代码不能用了。 于是&#xff0c;做了以下几步&…

自制AirTag,支持安卓/鸿蒙/PC/Home Assistant,无需拥有iPhone

苹果的AirTag很贵&#xff0c;虽然某强北有平价代替品&#xff0c;但是仍需要苹果设备才能绑定&#xff0c;才能查看位置。不支持安卓/鸿蒙/PC&#xff0c;也不支持集成到Home Assistant中。 AirTag 的原理 每个AirTag都会发送一个蓝牙信号&#xff0c;其可以被临近的苹果设备…

双重差分学习笔记

双重差分适用的研究场景&#xff1a; 研究某项政策或者冲击造成的影响 例如&#xff0c;某某小学在2024.12.12日颁布了小红花激励措施&#xff0c;我们要研究这项措施对学生成绩的影响&#xff0c;此时&#xff0c;就可以使用双重差分模型。 双重差分适用的数据类型&#xf…