绘图 | G2色块图

2024-01-22 02:48
文章标签 绘图 g2 色块

本文主要是介绍绘图 | G2色块图,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

看到很多论文中都引用了一个图,

论文中经常看到这个图

可能会在论文中也会引用到,于是想着先绘制一番,在同学帮助下,我了解到此图名叫:色块图,使用G2可以绘制,G2色块图地址:https://antv-g2.gitee.io/zh/examples/gallery#category-%E8%89%B2%E5%9D%97%E5%9B%BE,拷贝一份到本地,运行看下效果:

还是比较类似的,但是和我想要的效果图,还是有一些区别,比如:横轴和纵轴的位置、色块上是否有数字展示、是否存在图例,颜色、数据量等存在差别。

首次接触一门新技术,最好是看官网API,其次是看博客,最好是专业博客对官网API的解读,拥有这些资源后就开始对示例代码进行修改,我将修改处标记了出来,方便阅读,代码如下:

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title>色块图</title><style type="text/css">body{padding: 0;margin: 0;}#container{padding-top: 2s00px;width: 500px;margin: 30px auto;}</style></head><body><div id="container" /><script src="js/g2.min.js" type="text/javascript" charset="utf-8"></script><script src="js/data.js" type="text/javascript" charset="utf-8"></script><script>const data = [[0, 0, parseInt(Math.random() * 255 + 0)],[0, 1, parseInt(Math.random() * 255 + 0)],[0, 2, parseInt(Math.random() * 255 + 0)],[0, 3, parseInt(Math.random() * 255 + 0)],[0, 4, parseInt(Math.random() * 255 + 0)],[0, 5, parseInt(Math.random() * 255 + 0)],[0, 6, parseInt(Math.random() * 255 + 0)],[0, 7, parseInt(Math.random() * 255 + 0)],[0, 8, parseInt(Math.random() * 255 + 0)],[0, 9, parseInt(Math.random() * 255 + 0)],[0, 10, parseInt(Math.random() * 255 + 0)],[0, 11, parseInt(Math.random() * 255 + 0)],[0, 12, parseInt(Math.random() * 255 + 0)],[0, 13, parseInt(Math.random() * 255 + 0)],[0, 14, parseInt(Math.random() * 255 + 0)],[0, 15, parseInt(Math.random() * 255 + 0)],[0, 16, parseInt(Math.random() * 255 + 0)],[0, 17, parseInt(Math.random() * 255 + 0)],[1, 0, parseInt(Math.random() * 255 + 0)],[1, 1, parseInt(Math.random() * 255 + 0)],[1, 2, parseInt(Math.random() * 255 + 0)],[1, 3, parseInt(Math.random() * 255 + 0)],[1, 4, parseInt(Math.random() * 255 + 0)],[1, 5, parseInt(Math.random() * 255 + 0)],[1, 6, parseInt(Math.random() * 255 + 0)],[1, 7, parseInt(Math.random() * 255 + 0)],[1, 8, parseInt(Math.random() * 255 + 0)],[1, 9, parseInt(Math.random() * 255 + 0)],[1, 10, parseInt(Math.random() * 255 + 0)],[1, 11, parseInt(Math.random() * 255 + 0)],[1, 12, parseInt(Math.random() * 255 + 0)],[1, 13, parseInt(Math.random() * 255 + 0)],[1, 14, parseInt(Math.random() * 255 + 0)],[1, 15, parseInt(Math.random() * 255 + 0)],[1, 16, parseInt(Math.random() * 255 + 0)],[1, 17, parseInt(Math.random() * 255 + 0)],[2, 0, parseInt(Math.random() * 255 + 0)],[2, 1, parseInt(Math.random() * 255 + 0)],[2, 2, parseInt(Math.random() * 255 + 0)],[2, 3, parseInt(Math.random() * 255 + 0)],[2, 4, parseInt(Math.random() * 255 + 0)],[2, 5, parseInt(Math.random() * 255 + 0)],[2, 6, parseInt(Math.random() * 255 + 0)],[2, 7, parseInt(Math.random() * 255 + 0)],[2, 8, parseInt(Math.random() * 255 + 0)],[2, 9, parseInt(Math.random() * 255 + 0)],[2, 10, parseInt(Math.random() * 255 + 0)],[2, 11, parseInt(Math.random() * 255 + 0)],[2, 12, parseInt(Math.random() * 255 + 0)],[2, 13, parseInt(Math.random() * 255 + 0)],[2, 14, parseInt(Math.random() * 255 + 0)],[2, 15, parseInt(Math.random() * 255 + 0)],[2, 16, parseInt(Math.random() * 255 + 0)],[2, 17, parseInt(Math.random() * 255 + 0)],[3, 0, parseInt(Math.random() * 255 + 0)],[3, 1, parseInt(Math.random() * 255 + 0)],[3, 2, parseInt(Math.random() * 255 + 0)],[3, 3, parseInt(Math.random() * 255 + 0)],[3, 4, parseInt(Math.random() * 255 + 0)],[3, 5, parseInt(Math.random() * 255 + 0)],[3, 6, parseInt(Math.random() * 255 + 0)],[3, 7, parseInt(Math.random() * 255 + 0)],[3, 8, parseInt(Math.random() * 255 + 0)],[3, 9, parseInt(Math.random() * 255 + 0)],[3, 10, parseInt(Math.random() * 255 + 0)],[3, 11, parseInt(Math.random() * 255 + 0)],[3, 12, parseInt(Math.random() * 255 + 0)],[3, 13, parseInt(Math.random() * 255 + 0)],[3, 14, parseInt(Math.random() * 255 + 0)],[3, 15, parseInt(Math.random() * 255 + 0)],[3, 16, parseInt(Math.random() * 255 + 0)],[3, 17, parseInt(Math.random() * 255 + 0)],[4, 0, parseInt(Math.random() * 255 + 0)],[4, 1, parseInt(Math.random() * 255 + 0)],[4, 2, parseInt(Math.random() * 255 + 0)],[4, 3, parseInt(Math.random() * 255 + 0)],[4, 4, parseInt(Math.random() * 255 + 0)],[4, 5, parseInt(Math.random() * 255 + 0)],[4, 6, parseInt(Math.random() * 255 + 0)],[4, 7, parseInt(Math.random() * 255 + 0)],[4, 8, parseInt(Math.random() * 255 + 0)],[4, 9, parseInt(Math.random() * 255 + 0)],[4, 10, parseInt(Math.random() * 255 + 0)],[4, 11, parseInt(Math.random() * 255 + 0)],[4, 12, parseInt(Math.random() * 255 + 0)],[4, 13, parseInt(Math.random() * 255 + 0)],[4, 14, parseInt(Math.random() * 255 + 0)],[4, 15, parseInt(Math.random() * 255 + 0)],[4, 16, parseInt(Math.random() * 255 + 0)],[4, 17, parseInt(Math.random() * 255 + 0)],[5, 0, parseInt(Math.random() * 255 + 0)],[5, 1, parseInt(Math.random() * 255 + 0)],[5, 2, parseInt(Math.random() * 255 + 0)],[5, 3, parseInt(Math.random() * 255 + 0)],[5, 4, parseInt(Math.random() * 255 + 0)],[5, 5, parseInt(Math.random() * 255 + 0)],[5, 6, parseInt(Math.random() * 255 + 0)],[5, 7, parseInt(Math.random() * 255 + 0)],[5, 8, parseInt(Math.random() * 255 + 0)],[5, 9, parseInt(Math.random() * 255 + 0)],[5, 10, parseInt(Math.random() * 255 + 0)],[5, 11, parseInt(Math.random() * 255 + 0)],[5, 12, parseInt(Math.random() * 255 + 0)],[5, 13, parseInt(Math.random() * 255 + 0)],[5, 14, parseInt(Math.random() * 255 + 0)],[5, 15, parseInt(Math.random() * 255 + 0)],[5, 16, parseInt(Math.random() * 255 + 0)],[5, 17, parseInt(Math.random() * 255 + 0)],[6, 0, parseInt(Math.random() * 255 + 0)],[6, 1, parseInt(Math.random() * 255 + 0)],[6, 2, parseInt(Math.random() * 255 + 0)],[6, 3, parseInt(Math.random() * 255 + 0)],[6, 4, parseInt(Math.random() * 255 + 0)],[6, 5, parseInt(Math.random() * 255 + 0)],[6, 6, parseInt(Math.random() * 255 + 0)],[6, 7, parseInt(Math.random() * 255 + 0)],[6, 8, parseInt(Math.random() * 255 + 0)],[6, 9, parseInt(Math.random() * 255 + 0)],[6, 10, parseInt(Math.random() * 255 + 0)],[6, 11, parseInt(Math.random() * 255 + 0)],[6, 12, parseInt(Math.random() * 255 + 0)],[6, 13, parseInt(Math.random() * 255 + 0)],[6, 14, parseInt(Math.random() * 255 + 0)],[6, 15, parseInt(Math.random() * 255 + 0)],[6, 16, parseInt(Math.random() * 255 + 0)],[6, 17, parseInt(Math.random() * 255 + 0)],[7, 0, parseInt(Math.random() * 255 + 0)],[7, 1, parseInt(Math.random() * 255 + 0)],[7, 2, parseInt(Math.random() * 255 + 0)],[7, 3, parseInt(Math.random() * 255 + 0)],[7, 4, parseInt(Math.random() * 255 + 0)],[7, 5, parseInt(Math.random() * 255 + 0)],[7, 6, parseInt(Math.random() * 255 + 0)],[7, 7, parseInt(Math.random() * 255 + 0)],[7, 8, parseInt(Math.random() * 255 + 0)],[7, 9, parseInt(Math.random() * 255 + 0)],[7, 10, parseInt(Math.random() * 255 + 0)],[7, 11, parseInt(Math.random() * 255 + 0)],[7, 12, parseInt(Math.random() * 255 + 0)],[7, 13, parseInt(Math.random() * 255 + 0)],[7, 14, parseInt(Math.random() * 255 + 0)],[7, 15, parseInt(Math.random() * 255 + 0)],[7, 16, parseInt(Math.random() * 255 + 0)],[7, 17, parseInt(Math.random() * 255 + 0)]];const source = data.map((arr) => {return {name: arr[0],day: arr[1],data: arr[2],};});const chart = new G2.Chart({container: 'container',// autoFit: true,height: 500,width:500,});chart.data(source);chart.scale('name', {type: 'cat',values: ['<s>', 'russia', 'calls', 'for', 'joint', 'front', 'against', 'terroism'],/* 长度为8 */});chart.scale('day', {type: 'cat',values: ['terroism', 'global', 'combating', 'for', 'front', 'joint', 'a', 'of', 'creation', 'the', 'for2','sunday', 'called', 'ivanov', 'minister', 'defense', 'russian', '<s>']/* 长度为18 */});chart.scale('sales', {nice: true,});chart.axis('name', {tickLine: null,position: "top",/* 设置x坐标在上方 */label: {offset: 20,/* x轴上文字与图表之间的间距 */rotate: 150 /* 坐标文字旋转角度 */},});chart.axis('day', {position: "right",/* 设置y坐标显示在右边 */label: {offset: 10,},});chart.tooltip({showMarkers: false,title: "温馨提示:" /* 设置鼠标移到每一个色块上显示的提示信息的标题 */});chart.legend(false); /* 设置不显示图例 */chart.polygon().position('name*day').color('data', '#21487f-#69a0bf-#f4f9fd').label('aa', { /* 第一个字段aa和data不一致,则色块上不显示数据,如果一致,则色块上会显示出数据*/offset: -2,style: {fill: '#fff',shadowBlur: 2,shadowColor: 'rgba(0, 0, 0, .45)',},}).style({lineWidth: 1,stroke: '#fff',});chart.interaction('element-active');chart.render();</script></body>
</html>

实现效果: 

还存在一些细节没有处理:比如横纵坐标的颜色这些,由于不是核心,故没有花时间去精致一番;其次,如果数据存在重复,则只能显示第一个,第二个在坐标轴上会显示空白,我暂时还没有想到什么解决方案【效果图中显示的for和for2,这里的for2原本应该是for,由于显示不出来,暂时修改为for2】

参考:

1)官网案例:https://antv-g2.gitee.io/zh/examples/heatmap/basic#basic

2)语雀:https://www.yuque.com/antv/g2-docs

3)G2官网API:https://antv-g2.gitee.io/zh/docs/api/chart

4)js生成随机数:https://blog.csdn.net/qq_41609957/article/details/94300473

5)G2常用配置项:https://blog.csdn.net/z_robot/article/details/107035739

这篇关于绘图 | G2色块图的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/631611

相关文章

AI绘图怎么变现?想做点副业的小白必看!

在科技飞速发展的今天,AI绘图作为一种新兴技术,不仅改变了艺术创作的方式,也为创作者提供了多种变现途径。本文将详细探讨几种常见的AI绘图变现方式,帮助创作者更好地利用这一技术实现经济收益。 更多实操教程和AI绘画工具,可以扫描下方,免费获取 定制服务:个性化的创意商机 个性化定制 AI绘图技术能够根据用户需求生成个性化的头像、壁纸、插画等作品。例如,姓氏头像在电商平台上非常受欢迎,

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

matplotlib绘图中插入图片

在使用matplotlib下的pyplot绘图时,有时处于各种原因,需要采用类似贴图的方式,插入外部的图片,例如添加自己的logo,或者其他的图形水印等。 一开始,查找到的资料都是使用imshow,但是这会有带来几个问题,一个是图形的原点发生了变化,另外一个问题就是图形比例也产生了变化,当然最大的问题是图形占据了整个绘图区域,完全喧宾夺主了,与我们设想的只在绘图区域中占据很小的一块不相符。 经

海龟绘图简易教程|Turtle for Python

turtle 是 python 内置的一个比较有趣味的模块,俗称 海龟绘图,它是基于 tkinter 模块打造,提供一些简单的绘图工具,海龟作图最初源自 20 世纪 60 年代的 Logo 编程语言,之后一些很酷的 Python 程序员构建了 turtle 库,让其他程序员只需要 import turtle,就可以在 Python 中使用海龟作图。 原文链接|海龟绘图简易教程 1. 基本

GraphPad Prism 10 for Mac/Win:高效统计分析与精美绘图的科学利器

GraphPad Prism 10 是一款专为科研工作者设计的强大统计分析与绘图软件,无论是Mac还是Windows用户,都能享受到其带来的便捷与高效。该软件广泛应用于生物医学研究、实验设计和数据分析领域,以其直观的操作界面、丰富的统计方法和多样化的图表样式,成为科学研究的得力助手。 数据处理与整理 GraphPad Prism 10 支持从多种数据源导入数据,如Excel、CSV文件及数据库

MATLAB绘图基础5:MATLAB数据导入

参考书:《 M A T L A B {\rm MATLAB} MATLAB与学术图表绘制》(关东升)。 5.MATLAB数据导入 5.1 从CSV文件读取数据 C S V {\rm CSV} CSV文件是一种纯文本文件,文件中的数据以逗号为分隔符进行字段分隔,每一行数据代表一条记录,每个字段在该行内通过逗号进行分隔; C S V {\rm CSV} CSV文件可以使用任何文本

WPF入门到跪下 第十三章 3D绘图 - 3D绘图基础

3D绘图基础 四大要点 WPF中的3D绘图涉及4个要点: 视口,用来驻留3D内容3D对象照亮部分或整个3D场景的光源摄像机,提供在3D场景中进行观察的视点 一、视口 要展示3D内容,首先需要一个容器来装载3D内容。在WPF中,这个容器就是Viewport3D(3D视口),它继承自FrameworkElement,因此可以像其他元素那样在XAML中使用。 Viewport3D与其他元素相

Day18_0.1基础学习MATLAB学习小技巧总结(18)——MATLAB绘图篇(1)

利用空闲时间把碎片化的MATLAB知识重新系统的学习一遍,为了在这个过程中加深印象,也为了能够有所足迹,我会把自己的学习总结发在专栏中,以便学习交流。 参考书目:《MATLAB基础教程 (第三版) (薛山)》 之前的章节都是基础的数据运算用法,对于功课来说更加重要的内容是建模、绘图、观察数据趋势,接下来我会结合自己的使用经验,来为大家分享绘图、建模使用的小技巧。 二维图形绘制 在本章开

qtdraw-使用qt绘图之开源源码学习

1. 资源介绍 功能:使用qt在画板上绘制各种形状,并保持绘制内容到xml文件中。 项目源码:https://github.com/egan2015/qdraw 软件界面: 1.1 支持shape 6种 1.2 支持的功能 6种,分别是对绘制的图形进行撤销undo,重做redo,裁剪,复制,粘贴,删除功能。 2. 总体类图关系 总体分割3个独立块。 2.1

java AWT 绘图,实现弹球游戏,有实现keylistener,timer功能

Timer(int delay, ActionListener listener):每间隔delay毫秒,系统自动触发ActionListener监听器里的事件处理器(actionPerformed()方法)。 package javaAWT;import java.awt.Canvas;import java.awt.Color;import java.awt.Dimension;imp