Voronoi treemap!这么好看的图形绘制原来这么简单...

news2024/10/23 19:20:49
  • 更多详细的数据可视化教程,可订阅我们的店铺课程:

在上次推出树形图绘制教程之后,有小伙伴私信说有没有啥方法绘制如下所示的图表:

网友提供样例

网友提供样例

(说实话,我第一眼看到之后就感觉R或者Python绘制此图会比较难,这种图应该事交互式图表,感觉像D3绘制的哈),果然,在查阅资料之后知道这种图叫做Voronoi treemap,也查到了给的样图来自D3官网~我当时就在想“干嘛不直接学D3绘制呢?”,后来转念一想,我的读者要么是学R的,要么是学Python的,再学习一种新语言去绘制图表,好多人是不太愿意的,所以,我们今天的推文还是尽量使用R或者Python绘制这种图·····,扯得有点多了,我们直接进入正文。在R绘图体系中,有SysbioTreemapsvoronoiTreemap包可以绘制类似图形,接下来,小编一一介绍。

SysbioTreemaps包绘制

  • 官网

https://github.com/m-jahn/SysbioTreemaps

  • 官网样例

  1. 导入数据及简单处理

library(SysbioTreemaps)
#导入样例数据
data(mtcars)
#构造新列(划分等级依据)
mtcars$car_name = gsub(" ", "\n", row.names(mtcars))
  1. 使用voronoiTreemap函数构造绘图数据

tm01 <- SysbioTreemaps::voronoiTreemap(
  data = mtcars,
  levels = c("gear", "car_name"),
  cell_size = "wt",
  shape = "rounded_rect",
  seed = 123
)
  1. 使用drawTreemap将结果展示

drawTreemap(tm01, label_size = 2.5, label_color = "white")

drawTreemap example

drawTreemap example

  1. 定制化绘制 drawTreemap()函数提供以下多种参数用于更改绘制结果:

drawTreemap(
  treemap,
  levels = 1:length(treemap@call$levels),
  color_type = "categorical",
  color_level = NULL,
  color_palette = NULL,
  border_level = levels,
  border_size = 6,
  border_color = grey(0.9),
  label_level = max(levels),
  label_size = 1,
  label_color = grey(0.9),
  title = NULL,
  title_size = 1,
  title_color = grey(0.5),
  legend = FALSE,
  custom_range = NULL,
  width = 0.9,
  height = 0.9,
  layout = c(1, 1),
  position = c(1, 1),
  add = FALSE
)

接下来我们更改部分参数绘制结果:

# 设置形状(shape)为圆形
tm2 <- SysbioTreemaps::voronoiTreemap(
  data = mtcars,
  levels = c("gear", "car_name"),
  cell_size = "wt",
  shape = "circle",
  seed = 123
)
#绘制
drawTreemap(tm2, color_palette = c("#30A9DE","#EFDC05","#E53A40"),
            label_size = 4, label_color = "white",border_color="black",border_size = 6)

drawTreemap custom set

drawTreemap custom set

  1. 一次绘制多个图形 小伙伴们可能也看到layout、position和add等参数了,这些参数可以让你一次绘制多个图形,具体例子图下:

drawTreemap(tm2, title = "treemap 1", label_size = 3,color_palette = c("#30A9DE","#EFDC05","#E53A40"),
  color_type = "categorical", color_level = 1,border_color="black",border_size = 5,add=TRUE,
  layout = c(1, 3), position = c(1, 1),title_color = "black",title_size=2)

drawTreemap(tm2, title = "treemap 2", label_size = 3,color_palette = c("#30A9DE","#EFDC05","#E53A40"),
  color_type = "categorical", color_level = 2, border_color="black",border_size = 4,
  add = TRUE, layout = c(1, 3), position = c(1, 2),title_color = "black",title_size=2)

drawTreemap(tm2, title = "treemap 3", label_size = 3,color_palette = c("#30A9DE","#EFDC05","#E53A40"),
  color_type = "both", color_level = 1,border_color="black",border_size = 4,
  add = TRUE, layout = c(1, 3), position = c(1, 3),title_color = "black",title_size=2)

mult charts

mult charts

  1. 其他函数及熟悉设置 SysbioTreemaps包提供了多种绘图函数和对应的图层熟悉设置,这里就不一一介绍了,感兴趣的小伙伴可自行阅读官网进行探索哈~~

voronoiTreemap包绘制

介绍完静态绘制方法,小编接下里给大家推荐一个基于D3的绘制包(哈哈~还是得靠D3),详细介绍如下:

  1. 官网

https://github.com/uRosConf/voronoiTreemap

  1. 基本用法

library(voronoiTreemap)
data(ExampleGDP)
gdp_json <- vt_export_json(vt_input_from_df(ExampleGDP))
vt_d3(gdp_json)

base Example

base Example

  1. 定制化操作 vt_d3()函数提供的属性参数就那么几个,如下:

vt_d3(data, elementId = NULL, width = NULL, height = NULL,
  seed = NULL, title = NULL, legend = FALSE, legend_title = NULL,
  footer = NULL, label = TRUE, color_circle = "#aaaaaa",
  color_border = "#ffffff", color_label = "#000000",
  size_border = "1px", size_border_hover = "3px",
  size_circle = "2px")

这里进行简单的修改展示:

vt_d3(gdp_json,label = FALSE, color_border = "#000000", size_border = "2px")

custom set example

custom set example

由于是基于D3进行绘制,所以在定制化方面略显不足,看样子还得抽时间学习下D3~,好了,感兴趣的小伙伴可自行去官网探索哈~

总结

今天这篇推文,我们分别使用R-SysbioTreemaps和voronoiTreemap包绘制了Voronoi treemap图,希望可以给大家一些绘图参靠,至于D3的内容就交给小编来学习探索吧~~

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

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

相关文章

InstructGPT的四阶段:预训练、有监督微调、奖励建模、强化学习涉及到的公式解读

1. 预训练 1. 语言建模目标函数&#xff08;公式1&#xff09;&#xff1a; L 1 ( U ) ∑ i log ⁡ P ( u i ∣ u i − k , … , u i − 1 ; Θ ) L_1(\mathcal{U}) \sum_{i} \log P(u_i \mid u_{i-k}, \dots, u_{i-1}; \Theta) L1​(U)i∑​logP(ui​∣ui−k​,…,ui−1​;Θ…

智慧灌区信息化管理系统解决方案

一、方案背景 我国南方地区一些县级一般拥有5000多个大小水利设施&#xff0c; 尤其是灌区水利设施众多&#xff0c;这些灌区水利设施修建年代久&#xff0c;信息化程度低&#xff0c;但在保障农民生产、农田灌溉、抵抗自然灾害方面发挥着一定的作用&#xff0c;并能够最大限度…

go开发环境设置-安装与交叉编译(二)

1. 引言 Go语言&#xff0c;又称Golang&#xff0c;是Google开发的一门编程语言&#xff0c;以其高效、简洁和并发编程的优势受到广泛欢迎。作为一门静态类型、编译型语言&#xff0c;Go在构建网络服务器、微服务和命令行工具方面表现突出。 在开发过程中&#xff0c;开发者常…

科技云报到:大模型时代下,向量数据库的野望

科技云报到原创。 自ChatGPT爆火&#xff0c;国内头部平台型公司一拥而上&#xff0c;先后发布AGI或垂类LLM&#xff0c;但鲜有大模型基础设施在数据层面的进化&#xff0c;比如向量数据库。 在此之前&#xff0c;向量数据库经历了几年的沉寂期&#xff0c;现在似乎终于乘着Ch…

Yolov11与Yolov8在西红柿识别数据集上对比

Ultralytics 最新发布的 YOLOv11 相较于其上一代产品 YOLOv8&#xff0c;虽然没有发生革命性的变化&#xff0c;但仍有一些显著的改进&#xff08;值得注意的是&#xff0c;YOLOv9 和 YOLOv10 并非由 Ultralytics 开发&#xff09;。其中&#xff0c;最引人注目的变化包括&…

4.redis通用命令

文章目录 1.使用官网文档2.redis通用命令2.1set2.2get2.3.redis全局命令2.3.1 keys 2.4 exists2.5 del(delete)2.6 expire - (失效时间)2.7 ttl - 过期时间2.7.1 redis中key的过期策略2.7.2redis定时器的实现原理 2.8 type2.9 object 3.生产环境4.常用的数据结构4.1认识数据类型…

代码复现(四):DBINet

文章目录 datasets/AB2019BASDataset.pydatasets/ext_transforms.pynetwork/modules.pynetwork/DBINet.pynetwork/DBINet_Backbone.pyAB2019_train.py 代码链接&#xff1a;DBINet datasets/AB2019BASDataset.py 加载Australia Bushfire 2019 Burned Area Segmentation Datase…

【论文精读】RELIEF: Reinforcement Learning Empowered Graph Feature Prompt Tuning

Navigating the Digital World as Humans Do: UNIVERSAL VISUAL GROUNDING FOR GUI AGENTS 前言AbstractMotivationSolutionRELIEFIncorporating Feature Prompts as MDPAction SpaceState TransitionReward Function Policy Network ArchitectureDiscrete ActorContinuous Act…

【杂记】之语法学习第一课输入输出与数据类型与选择结构

首先学会新建源文件 1.打开DEV C 2.文件—>新建—>源代码 3.编写程序 4.编译并运行&#xff08;F11&#xff09; 第一个程序《Hello,World!》 题目描述 编写一个能够输出 Hello,World! 的程序。 提示&#xff1a; 使用英文标点符号&#xff1b;Hello,World! 逗号后…

8-基于双TMS320C6678 + XC7K420T的6U CPCI Express高速数据处理平台

1、板卡概述 板卡由我公司自主研发&#xff0c;基于6UCPCI架构&#xff0c;处理板包含双片TI DSP TMS320C6678芯片&#xff1b;一片Xilinx公司FPGA XC7K420T-1FFG1156 芯片&#xff1b;六个千兆网口&#xff08;FPGA两个&#xff0c;DSP四个&#xff09;&#xff1b;DSP与FPGA之…

基于springboot+vue实现的酒店在线预订系统

基于springbootvue实现的酒店在线预订系统 &#xff08;源码L文ppt&#xff09;4-082 4.2 系统结构设计 构图是系统的体系结构&#xff0c;体系结构是体系结构体系的一部分&#xff0c;体系结构体系是体系结…

LabVIEW空间相机测控系统

空间相机是遥感技术中的核心设备&#xff0c;其在太空中的性能对任务的成功至关重要。为了确保空间相机能够在极端环境下稳定工作&#xff0c;地面模拟测试成为必不可少的环节。LabVIEW开发的空间相机测控系统&#xff0c;通过对温度、应力和应变等参数进行高精度测量&#xff…

LeetCode 3319. 第 K 大的完美二叉子树的大小

LeetCode 3319. 第 K 大的完美二叉子树的大小 给你一棵 二叉树 的根节点 root 和一个整数k。 返回第 k 大的 完美二叉子树的大小&#xff0c;如果不存在则返回 -1。 完美二叉树 是指所有叶子节点都在同一层级的树&#xff0c;且每个父节点恰有两个子节点。 子树 是指树中的某一…

计算机网络:数据链路层 —— 以太网(Ethernet)

文章目录 局域网局域网的主要特征 以太网以太网的发展100BASE-T 以太网物理层标准 吉比特以太网载波延伸物理层标准 10吉比特以太网汇聚层交换机物理层标准 40/100吉比特以太网传输媒体 局域网 局域网&#xff08;Local Area Network, LAN&#xff09;是一种计算机网络&#x…

本地装了个pytorch cuda

安装命令选择 pip install torch1.13.1cu116 torchvision0.14.1cu116 torchaudio0.13.1 --extra-index-url https://download.pytorch.org/whl/cu116 torch版本查看 python import torch print(torch.__version__) 查看pytorch能否使用cuda import torch# 检查CUDA是否可用…

如何用AWG实现脉冲激光输出

脉冲激光二极管提供强功率短脉冲的能力&#xff0c;使其成为目标指定和测距等军事应用的理想选择。事实上&#xff0c;开发这些二极管的许多历史动机都有军事渊源。然而&#xff0c;当今的技术进步和成本降低的大背景之下&#xff0c;在测试测量和医学领域新的应用得以开辟。 …

113.WEB渗透测试-信息收集-ARL(4)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a; 易锦网校会员专享课 上一个内容&#xff1a;112.WEB渗透测试-信息收集-ARL&#xff08;3&#xff09;-CSDN博客 等待搭建成功 创建成…

Vue深入了解

Vue深入了解 MVVMv-model (双向数据绑定原理)异步更新keep-alive原理$nextTick原理computed 和 watch 的区别css-scoped虚拟DOMVuex && PiniaVue-router原理proxy 与 Object.defineProperty组件通信方式 MVVM <!DOCTYPE html> <html lang"en">&…

声波驱鸟 全向强声广播的应用

HT-360A多层叠形360向广播是恒星科通自主研发的一款应急广播专用设备&#xff0c;该设备内部采用1-4组换能器垂直阵列设置&#xff0c;水平采用指数函数碟形堆叠技术&#xff0c;在垂直方向上多层碟扬声器可实现360度环形垂直阵列&#xff0c;实现多层声场叠加。 系统可采用4G…

Linux驱动中的并发与竞争处理

Linux是一个多任务操作系统&#xff0c;肯定会存在多个任务共同操作同一段内存或者设备的情况&#xff0c;多个任务甚至中断都能访问的资源叫做共享资源&#xff0c;就和共享单车一样。在驱动开发中要注意对共享资源的保护&#xff0c;也就是要处理对共享资源的并发访问。比如共…