本文提供了一个易于遵循的指南,用于在 JavaScript 中间构建交互式线性仪表图。

我们将展示如何快速创建一个酷炫的交互式线性仪表图表,突出显示世界各地的 Covid-19 疫苗接种数据。我们的图表将使我们能够在撰写本文时可视化 Covid-19 疫苗接种的状态,并将显示两种类型的数据——显示我们距离为全球人口部分和完全接种疫苗的中途目标还有多远。

什么是线性仪表图?

鉴于正在创建的大量数据以及从数据中收集信息的众多可能性,数据可视化是一种非常宝贵的工具。数据可视化对于识别趋势、解释模式以及向目标受众传达复杂的想法特别有用。

线性仪表图表示显示所需值的垂直或水平线性刻度,带有颜色刻度以及单个或多个指针。可以根据所表示的数据在轴上设置数据范围的最小值和最大值。指针位置指示指标的当前值。

仪表图可以使用单个指针或标记组合显示单个值或多个值。指针可以是带有任何形状标记的针或线,例如圆形、正方形、矩形或三角形。

线性仪表图表类型是一种有效的可视化表示,用于显示值与所需数据点的距离。

线性量规的类型

线性仪表的几种类型是温度计图表,子弹图表,坦克图表和LED图表。水银温度计——由显示温度和指针值的小刻度组成——是线性仪表图的典型例子。

我们将要构建的线性仪表可视化

这是最终线性仪表图的预览。按照本教程了解我们如何使用 JavaScript 构建这个有趣且信息丰富的线性仪表图。

构建 JavaScript 线性仪表的四个步骤

掌握 HTML 和 JavaScript 等技术的技能总是很有用的。但在本教程中,我们使用了一个 JS 图表库,即使只需要很少的技术知识,也可以更轻松地创建像线性仪表这样的引人注目的图表。

有几个JavaScript 图表库可以轻松地可视化数据,这里我们使用AnyChart创建线性仪表图。这个库很灵活,有大量的文档,它包含一些很好的例子。此外,它还有一个用于试验代码的游乐场,并且可以免费用于非商业用途。如果您想购买许可版本,您可以查看可用选项,如果您是教育机构或非营利组织,您可以在此处联系以获取免费许可。

制作 JavaScript 线性仪表的步骤

以下是创建线性仪表图的基本步骤:

  1. 创建一个基本的 HTML 页面。
  2. 包括必要的 JavaScript 文件。
  3. 添加数据。
  4. 为图表编写 JavaScript 代码。

让我们在下面详细了解这些步骤中的每一个。

1.创建一个基本的HTML页面

我们需要做的第一件事是制作一个 HTML 页面来保存我们的可视化。我们添加一个<div>块元素并给它一个 ID,以便我们以后可以引用它:

<html lang="en"><head><title>JavaScript Linear Gauge</title><style type="text/css">      html, body, #container { width: 100%; height: 100%; margin: 0; padding: 0; } </style></head><body><div id="container"></div></body>
</html>

的宽度和高度属性<div>设置为 100%,以便图表在整个屏幕上呈现。这些属性可以根据需要进行修改。

2. 包含必要的 JavaScript 文件

下一步是在 HTML 页面中引用 JS 链接。我们将在本教程中使用 AnyChart 库,所以让我们从他们的CDN中包含相应的文件。

要创建线性仪表图,我们需要添加三个脚本:核心模块、线性仪表模块和表格模块:

<html lang="en"><head><title>JavaScript Linear Gauge</title><style type="text/css">html, body, #container { width: 100%; height: 100%; margin: 0; padding: 0; } </style></head><body>  <div id="container"></div><script>// All the code for the JS linear gauge will come here</script><script src="https://cdn.anychart.com/releases/8.10.0/js/anychart-core.min.js"></script><script src="https://cdn.anychart.com/releases/8.10.0/js/anychart-linear-gauge.min.js"></script><script src="https://cdn.anychart.com/releases/8.10.0/js/anychart-table.min.js"></script></body>
</html>

3. 添加数据值

线性仪表图的数据是从Our World in Data中收集的,并包含在代码中。在该网站上,我们可以看到全世界每个大陆接种一剂和两剂 Covid疫苗的人的百分比。

因为(在撰写本文时)没有一个数字大于 50%,我们将所有线性仪表的轴的最大限制保持为 50%,并且我们比较每个大陆与该标记的距离,以及全球数字。我们用 LED 表示至少部分接种疫苗的数字,用条形指针表示完全接种疫苗的数字。我们将在最后一步看到如何添加数据。

那么,我们的初始步骤都完成了,现在让我们添加代码,用 JavaScript 制作一个线性仪表图!

4. 为图表编写 JavaScript 代码

在添加任何代码之前,我们将所有内容封装在一个函数中,以确保其中的整个代码仅在页面加载后执行。

创建线性仪表图涉及几个步骤,并且比其他基本图表类型更复杂一些。但这并不意味着它非常困难,我们将通过每一步来了解图表是如何制作的。

定义仪表图的线性刻度和轴

我们的图表中有多个指针。因此,让我们从创建一个接受两个值的函数开始:一个用于条形指针,一个用于 LED 仪表。然后我们将创建一个仪表,设置数据,并将布局指定为水平。接下来,我们将设置刻度和轴的范围。我们将制作出具有最小和最大范围的线性比例。对于轴,我们将定义属性并设置方向:

function drawGauge(value, settings) {// Create gauge with settingsconst gauge = anychart.gauges.linear();gauge.data([value, settings.value]);gauge.layout('horizontal');// Set scale for gaugeconst scale = anychart.scales.linear();scale.minimum(0).maximum(settings.maximum).ticks({ interval: 2 });// Set axis for gaugeconst axis = gauge.axis(0);axis.width('1%').offset('43%').scale(scale).orientation('bottom');
}

设置条形指针和标签

现在,我们将为条形系列创建条形指针和标签。给标签一个偏移量以避免与指针重叠:

// Create and set bar point
const barSeries = gauge.bar(0);barSeries.scale(scale).width('4%');// Create and set label with actual data
const labelBar = barSeries.labels();
labelBar.enabled(true).offsetY('-15px');

创建 LED 指针并设置颜色属性

在 LED 点中,我们将指定点之间的间隙,并使用 dimmer 属性设置剩余 LED 点的颜色以指示不亮的效果。我们还将声明点亮的 LED 点的色标:

// Create and set LED point
const ledPointer = gauge.led(1);ledPointer.offset('10%').width('30%').count(settings.maximum).scale(scale).gap(0.55).dimmer(function () {return '#eee';});ledPointer.colorScale().colors(['#63b39b', '#63b39b']);

用每个数据点的目标值声明仪表

为了为每个大陆制作线性仪表,我们将为每个区域调用上面定义的函数及其数据。第一个数字表示目标值数据,第二个变量是带有 LED 数据的对象。maximum保持恒定 50,而是value每个数据点的完全接种疫苗人口的百分比值。该值将由指针显示:

// Create gauges
const world = drawGauge(13.68, { maximum: 50, value: 27.13 });
const europe = drawGauge(36.98, { maximum: 50, value: 47.28 });
const nAmerica = drawGauge(36.77, { maximum: 50, value: 46.53 });
const sAmerica = drawGauge(22.8, { maximum: 50, value: 40.54 });
const asia = drawGauge(10.14, { maximum: 50, value: 27.16 });
const oceania = drawGauge(9.75, { maximum: 50, value: 22.12 });
const africa = drawGauge(1.56, { maximum: 50, value: 3.04 });

设置线性仪表的布局

为了在另一个下显示每个线性仪表,我们将定义一个表格并将标题与每个数据点一起添加为单独的行。我们将添加布局的各种属性,例如对齐方式和字体大小。我们还将为第一行定义参数,因为它是标题,并将第一列的宽度属性设置为 100%,因为我们不再需要任何列:

// Create table to place gauges
const layoutTable = anychart.standalones.table();
layoutTable.hAlign('right').vAlign('middle').fontSize(14).cellBorder(null);// Put gauges into the layout table
layoutTable.contents([[null, 'Covid-19 Vaccination - How far are we from the halfway mark?'],['World', world],['Europe', europe],['North America', nAmerica],['South America', sAmerica],['Asia', asia],['Oceania', oceania],['Africa', africa]
]);// Set height for first row in layout table
layoutTable.getRow(0).height(50).fontSize(22).hAlign('center');// Set the first column to 100% width
layoutTable.getCol(0).width(100);

绘制图表

最后一步是引用<div>我们在上一步中添加的容器,并绘制图表:

// Set container id and initiate drawing
layoutTable.container('container');
layoutTable.draw();

就是这样。我们现在有一个功能齐全且美观的 JavaScript 线性仪表图!可以在CodePen上查看此线性量规初始版本的代码。

使图表可访问

确保尽可能多的人可以访问图表是一种很好的做法。因此,请记住 a11y,我们制作了更适合屏幕阅读器的线性仪表图的基本版本。您可以在此处查看此内容,还可以在 AnyChart JavaScript 库的文档中阅读有关此方面的更多信息。

自定义线性仪表

我们制作的默认线性仪表图表现在看起来很棒,但是进行一些修改将增强可读性并使图表更加出色。JavaScript 库不仅非常适合快速创建图表,还适合根据需要自定义可视化。图表库提供了许多用于控制图表行为和美观的配置选项。让我们对当前的线性仪表图进行一些小而有效的调整。

颜色修改

为了使线性仪表看起来更具凝聚力,让我们将条形指针的颜色属性设置为 LED 点的较暗版本。我们将通过指定栏的填充和描边属性来实现:

// Create and set bar point
const barSeries = gauge.bar(0);
barSeries.scale(scale).width('4%').fill('#296953').stroke('#296953');

为我们的线性仪表图添加图例

由于我们为条形图、亮起和不亮起的 LED 指针使用了不同的颜色,因此最好提供一个图例来解释颜色。我们将制作一个图例并将其添加到图表标题下方:

// Create stand alone legend
const legend = anychart.standalones.legend();
legend
.position('center')
.items([{ text: 'Fully vaccinated', iconFill: '#296953' },{ text: 'Partially vaccinated', iconFill: '#63b39b' },{ text: 'Not vaccinated', iconFill: '#eee' }
]);

工具提示格式

为了促进更好的数据通信,让我们通过以百分比形式显示值并指示仪表的最大值为 50% 来格式化工具提示以使其更具信息性:

// Set gauge tooltip
gauge.tooltip().useHtml(true).titleFormat('{%Value} %').format('Maximum on scale: ' +settings.maximum +' %');

在CodePen上查看此版本的完整代码。

轴和标签格式

我们要做的最后一件事是将所有数据值显示为百分比值以避免任何混淆。我们还将在标题下方的表格中添加一个副标题作为一行,以指示值是百分比。最后一件事是用更粗的字体美化条形标签。

这个 JavaScript 线性仪表图的完整最终代码可以在CodePen上找到。

结论

在这个循序渐进的教程中,我们已经看到使用一个好的 JavaScript 创建功能性和视觉上吸引人的 JavaScript 图表并不难。查看文档和示例,以更好地了解线性量的特性和属性。

如果本文对你有帮助,别忘记给我个3连 ,点赞,转发,评论,,咱们下期见。

收藏 等于白嫖,点赞才是真情。

亲爱的小伙伴们,有需要JAVA面试文档资料请点赞+转发,关注我后,私信我333就可以领取免费资料哦

如何在 JavaScript 中创建线性仪表图相关推荐

  1. vj节点_创意编码—如何在JavaScript中创建VJ引擎

    vj节点 by George Gally 通过乔治·加利 创意编码-如何在JavaScript中创建VJ引擎 (Creative Coding - How to create a VJ engine ...

  2. 如何在JavaScript中创建RSS阅读器应用程序

    RSS(真正简单的联合组织)是一种在线发布者用来将其内容联合到其他网站和服务的标准化格式. RSS文档 (也称为feed )是一种XML文档 ,其中包含发布者希望分发的内容. 几乎所有在线新闻网站和博 ...

  3. 如何在Excel中创建一个折线图?

    poi官方文档地址 参考资料 参考了其他人的写法,加入了我自己的一些注释,额外加了几个方法. @Testvoid chartTest() throws IOException {Workbook wb ...

  4. 快速提示:如何在JavaScript中创建和处理数组

    这篇文章由Chris Perry和Marcello La Rocca进行了同行评审. 感谢所有SitePoint的同行评审人员使SitePoint内容达到最佳状态! Array对象的length属性是 ...

  5. 如何在Javascript中创建范围

    写一个范围函数,可以传入开始和结束索引,然后返回整个列表. function range(start, end) { var ans = []; for (let i = start; i <= ...

  6. 如何在 JavaScript 中创建虚拟键盘

  7. 如何在JavaScript中声明名称空间?

    如何在JavaScript中创建名称空间,以使我的对象和函数不会被其他同名对象和函数覆盖? 我使用了以下内容: if (Foo == null || typeof(Foo) != "obje ...

  8. 创建jira sprint_如何在Excel中创建高级sprint燃尽图

    创建jira sprint SCRUM is a great way to manage all sorts of tasks including sprints, but you don't hav ...

  9. 如何在Ubuntu 16.04中创建GIF动图

    大 家经常在新浪微薄.QQ.facebook.twitter 中看到有趣的 GIF 动图吧,GIF 文件比视频小.比静态 JPG 图片形像生动,非常适于互联网上的搞笑帖子.产品展示和功能步骤演示,所以 ...

最新文章

  1. nginx+keepalive主从双机热备+自动切换解决方案
  2. 用了ReSharpe硬是爽
  3. maven 包的导入
  4. 【matlab函数】convn多维卷积
  5. Python文件操作-文件的增删改查
  6. java值栈_Struts2学习笔记-Value Stack(值栈)和OGNL表达式
  7. 中国内窥镜仪器固定臂市场趋势报告、技术动态创新及市场预测
  8. cvCompareHist() 直方图匹配
  9. 如何查找native方法
  10. 麦克斯韦电磁场理论基础
  11. linux怎么查看pid对应的进程,linux如何查看某个pid的进程?
  12. 人机大战!人工智能轻松打败美国空军
  13. PHPStudy使用教程及phpstudy安装教程
  14. 内网穿透神器frp之进阶配置——stcp及p2p模式
  15. uniapp获取用户数据昵称为“微信用户”(小程序)@杨章隐
  16. 卫星导航系统的发展历史
  17. 软件测试工程师如何保证软件的质量?
  18. c语言24小时制转化12,在C ++中将时间从24小时制转换为12小时制
  19. 计算机windows7教程,win7系统教程
  20. 如何监控Redis性能指标

热门文章

  1. 被 ChatGPT “霍霍”的文学界:由 AI 编写的投稿激增,17 岁老牌杂志宣布暂停征稿...
  2. 实现将Excel中的行、列内容互转
  3. 华为V5服务器SAS/SATA硬盘常亮黄灯及解决方案
  4. bmp文件存储,并用进制画图
  5. 对象实例与对象引用有何不同?
  6. java char是几个字节_关于java中char占几个字节,汉字占几个字节
  7. 我的世界java史莱姆生成条件_【科普】貌似很多人都不知道史莱姆的生成条件。...
  8. Echarts环形图设置空数据样式
  9. 明治乳业“解锁乳酸菌之旅”趣味科普展览限时亮相虹桥南丰城;佛罗伦萨小镇开启10周年狂欢购 | 知消...
  10. 赛门铁克整合Altiris推端点安全管理平台