绘图技巧 | 矩形树状图(Treemap)绘图技巧分享~~

news2024/10/11 6:00:32

今天这篇推文,小编还是像往常一样交给大家绘图技巧,今天的主角就是-*树形矩阵图(Treemap)*。绘制树形图使用R或者Python都是可以绘制的,今天我们还是使用R进行绘制(Python绘制结果为交互式,后面统一介绍相应的库)。在R中有专门的包-treemapify包进行绘制。今天内容主要如下:

  • 树形矩阵图(Treemap)简介

  • 树形矩阵图(Treemap)R实例演示

  • 更多详细的数据可视化教程,可订阅我们的店铺课程:

树形矩阵图(Treemap)简介

在数据可视化分析中,在面对大量分层结构(树状结构) 的数据时,要想准确的使用图表去展示时,树形图(Treemap)就排上用场了。在树形图中,图表被分为若干个大小的矩形,矩形的大小和顺序取决于数据变量,而变量间则使用不同颜色表示。

绘制树形图的所需数据特点如下:

  • 数据呈部分到整体的关系;

  • 数据使分层结构的。

树形矩阵图(Treemap)R实例演示

R-treemapify包可以很好的绘制树形矩阵图(Treemap),其官网为:https://wilkox.org/treemapify/index.html,其主要提供

  • geom_treemap()

  • geom_treemap_text()

  • geom_treemap_subgroup_border()

  • geom_treemap_subgroup_text()

等绘图函数进行树形矩阵图的元素的添加,由于是ggplot2的拓展包,较容易理解,小伙伴们可直接参看官网接好和例子即可。下面我们通过一个实例演示R-treemapify包是如何绘制树形矩阵图的。

官网样例美化:

ggplot(G20, aes(area = gdp_mil_usd, fill = as.factor(hdi), label = country,
                subgroup = region)) +
  geom_treemap() +
  geom_treemap_subgroup_border() +
  geom_treemap_subgroup_text(place = "centre", grow = T, alpha = 0.5, colour =
                             "black", fontface = "italic", min.size = 0) +
  geom_treemap_text(colour = "white", place = "topleft", reflow = T) +
  scale_fill_manual(values = lacroix_palette("Pamplemousse", n = 19, type = "continuous"),name="")+
    labs(
    title = "Example of <span style='color:#D20F26'>treemapify::geom_treemap function</span>",
    subtitle = "processed charts with <span style='color:#1A73E8'>geom_treemap()</span>",
    caption = "Visualization by <span style='color:#DD6449'>DataCharm</span>") +
    hrbrthemes::theme_ipsum(base_family = "Roboto Condensed") +
    theme(
        plot.title = element_markdown(hjust = 0.5,vjust = .5,color = "black",
                                      size = 25, margin = margin(t = 1, b = 12)),
        plot.subtitle = element_markdown(hjust = 0,vjust = .5,size=18),
        plot.caption = element_markdown(face = 'bold',size = 12),

        panel.background = element_rect(fill="#a3c9c7"),
        panel.border = element_rect(fill = NA,colour = "#a3c9c7"),
        plot.background = element_rect(fill="#a3c9c7",colour = "#a3c9c7"),
        # 修改图例参数
        legend.position = 'none',
        legend.direction = "horizontal",
        legend.spacing.x = unit(.3,"cm"),
        legend.key.height = unit(1, 'lines'),
        legend.key.width = unit(1.4, 'lines'),
        legend.text = element_text(size = 15,margin = margin(r = .5, unit = 'cm'))
  ) +
  guides(fill=guide_legend(nrow=3,byrow=TRUE,reverse = TRUE,title=NULL))

可视化结果如下:

Example01 of treemapify

Example01 of treemapify

实例演示

library(tidyverse)
library(ggtext)
library(hrbrthemes)
library(LaCroixColoR)
library(treemapify)

proglangs <- readr::read_csv("proglanguages.csv")
ggplot(proglangs, aes(area=value, fill=parent, subgroup=parent)) +
    geom_treemap() +
    geom_treemap_subgroup_border(color="gray40") +
    geom_treemap_text(aes(label=id),fontface = "italic", colour = "black", place = "centre",
                      grow = TRUE) +
     geom_treemap_subgroup_text(color="white",fontface="bold.italic",place = "centre",
                                min.size = 0,alpha=.7,grow = TRUE)+

    scale_fill_manual(values = lacroix_palette(type = "paired"),name="")+

    labs(
    title = "Example of <span style='color:#D20F26'>treemapify::geom_treemap function</span>",
    subtitle = "processed charts with <span style='color:#1A73E8'>geom_treemap()</span>",
    caption = "Visualization by <span style='color:#DD6449'>DataCharm</span>") +
    hrbrthemes::theme_ipsum(base_family = "Roboto Condensed") +
    theme(
        plot.title = element_markdown(hjust = 0.5,vjust = .5,color = "black",
                                      size = 25, margin = margin(t = 1, b = 12)),
        plot.subtitle = element_markdown(hjust = 0,vjust = .5,size=18),
        plot.caption = element_markdown(face = 'bold',size = 12),

        panel.background = element_rect(fill="#a3c9c7"),
        panel.border = element_rect(fill = NA,colour = "#a3c9c7"),
        plot.background = element_rect(fill="#a3c9c7",colour = "#a3c9c7"),
        # 修改图例参数
        legend.position = 'bottom',
        legend.direction = "horizontal",
        #legend.spacing.y = unit(.5,"cm"),
        legend.spacing.x = unit(.3,"cm"),
        #legend.key.size = unit(1, 'lines'),
        legend.key.height = unit(1, 'lines'),
        legend.key.width = unit(1.4, 'lines'),
        legend.text = element_text(size = 15,margin = margin(r = .5, unit = 'cm'))
  ) +
  guides(fill=guide_legend(nrow=1,byrow=TRUE,reverse = TRUE,title=NULL))

可视化结果如下:

example of treemapify test

example of treemapify test

好了,今天的可视化教程比较简单,大家可下载数据进行练习哈,或者直接使用官网提供的数据进行练习哈~~

总结

今天的推文小编给大家介绍了一个快速绘制树形矩阵图的方法,具体的绘图函数也是很好理解的,这里就不再赘述,希望小伙伴们可以多练习哈~~

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

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

相关文章

Java项目-----图形验证码登陆实现

原理: 验证码在前端显示,但是是在后端生成, 将生成的验证码存入redis,待登录时,前端提交验证码,与后端生成的验证码比较. 详细解释: 图形验证码的原理(如下图代码).前端发起获取验证码的请求后, 1 后端接收请求,生成一个键key(随机的键) 然后生成一个验证码作为map的valu…

npm运行时出现npm ERR! builtins is not a function报错!

项目场景&#xff1a; 项目运行时什么都没动都没改突然运行不起来了&#xff0c;报错 TypeError: builtins is not a function 代码什么都没动&#xff0c;不是代码问题&#xff0c;排查后只有可能是node和npm的问题&#xff0c;所以卸载掉node重装重启 解决方案&#xff1a; …

Python:赋值的本质其实是引用

相关阅读 Pythonhttps://blog.csdn.net/weixin_45791458/category_12403403.html?spm1001.2014.3001.5482 在Python编程中&#xff0c;我们经常会遇到各种赋值操作&#xff0c;无论是简单的变量赋值&#xff0c;还是复杂的数据结构操作。表面上看&#xff0c;赋值就是把一个值…

数字工厂管理系统如何优化生产流程

在当今快速变化的制造业环境中&#xff0c;提高生产效率、降低成本并确保产品质量是企业持续发展的关键。数字工厂管理系统作为智能制造的重要组成部分&#xff0c;正逐渐成为优化生产流程、推动产业升级的重要工具。本文将探讨数字工厂管理系统如何通过智能化、自动化和数据分…

目标检测中的损失函数

损失函数是用来衡量模型与数据的匹配程度的&#xff0c;也是模型权重更新的基础。计算损失产生模型权重的梯度&#xff0c;随后通过反向传播算法&#xff0c;模型权重得以更新进而更好地适应数据。一般情况下&#xff0c;目标损失函数包含两部分损失&#xff0c;一个是目标框分…

基于单片机的穿戴式泳池遇险紧急呼救系统的设计

本计基于单片机的穿戴式泳池遇险紧急呼救系统装置。该装置采用STC12C5A60S2单片机与心率检测模块MAX30102的一体化脉冲血氧分析仪和心率监测器&#xff0c;对人体的心跳进行了实时检测。该装置由发送端和接收端两部分组成&#xff0c;中间由LORA无线通信模块进行数据传输&#…

使用Pytorch写简单线性回归

文章目录 Pytorch一、Pytorch 介绍二、概念三、应用于简单线性回归 1.代码框架2.引用3.继续模型(1)要定义一个模型&#xff0c;需要继承nn.Module&#xff1a;(2)如果函数的参数不具体指定&#xff0c;那么就需要在__init__函数中添加未指定的变量&#xff1a; 2.定义数据3.实例…

掌握未来技能:亚马逊云科技推出生成式 AI 认证计划!

目录 前言 生成式 AI 的力量 1. 内容创造的无限可能 2. 数据增强和个性化 3. 提高生产力 4. 教育和研究的辅助工具 5. 突破语言障碍 关于亚马逊云科技生成式 AI 认证 1. 认证目标 2. 认证内容 3. 认证优势 如何获得认证 1. 在线学习 2. 实践考试 3.AWS Certifie…

连肝了多天学习MySQL索引与性能优化,详细总结一下索引的使用与数据库优化

文章目录 索引是什么&#xff1f;索引的作用初步认识索引索引的类型按照数据结构分类BTREE索引 哈希索引 按功能逻辑进行分类唯一索引普通索引主键索引全文索引 按照字段的个数进行划分单列索引多列&#xff08;组合&#xff0c;联合&#xff09;索引 小结索引的设计原则数据准…

FreeRTOS——TCB任务控制块、任务句柄、任务栈详解

任务控制块结构体 任务控制块是 FreeRTOS 中用于描述和管理任务的数据结构&#xff0c;包含了任务的状态、优先级、堆栈等信息。 TCB_t的全称为Task Control Block&#xff0c;也就是任务控制块&#xff0c;这个结构体包含了一个任务所有的信息&#xff0c;它的定义以及相关变…

UE5蓝图学习笔记玩家碰撞触发死亡加一秒黑屏

UE5蓝图学习笔记玩家碰撞触发死亡加一秒黑屏 1.代表检测自身是否到和其他Actor碰撞。 2.判断Actor是否等于Player Pawn 3.摄像机在一秒钟褪色0-1。 4.Delay延时一秒执行。 5.获取当前关卡的名字。 6.重新加载当前的关卡 。 7.获取Get Plyer Pawn。 8.获取玩家相机控制器…

一次性语音芯片:重塑语音识别技术,引领智能化生活新时代

随着一次性语音芯片的突破性进展&#xff0c;语音识别技术正融入我们生活的方方面面&#xff0c;引领着智能化生活迈向一个全新的时代。这些芯片不仅体积小巧、成本低廉&#xff0c;更在性能上实现了质的飞跃&#xff0c;能够更精确地捕捉并理解人类语音。本文将解读关于一次性…

Scrapy网络爬虫基础

使用Spider提取数据 Scarpy网络爬虫编程的核心就是爬虫Spider组件&#xff0c;它其实是一个继承与Spider的类&#xff0c;主要功能设计封装一个发送给网站服务器的HTTP请求&#xff0c;解析网站返回的网页及提取数据 执行步骤 1、Spider生成初始页面请求&#xff08;封装于R…

基于SpringBoot智能垃圾分类系统【附源码】

基于SpringBoot智能垃圾分类系统 效果如下&#xff1a; 系统首页界面 用户注册界面 垃圾站点页面 商品兑换页面 管理员登录界面 垃圾投放界面 物业登录界面 物业功能界图 研究背景 随着城市化进程的加速&#xff0c;生活垃圾的产量急剧增加&#xff0c;传统的垃圾分类方式已…

Java 集合 Collection常考面试题

理解集合体系图 collection中 list 是有序的,set 是无序的 什么是迭代器 主要遍历 Collection 集合中的元素,所有实现了 Collection 的集合类都有一个iterator()方法,可以返回一个 iterator 的迭代器。 ArrayList 和 Vector 的区别? ArrayList 可以存放 null,底层是由数…

Oracle RAC IPC Send timeout detected问题分析处理

一、报错信息 今天在进行数据库巡检时&#xff0c;在集群节点1发现了IPC相关报错信息&#xff1a; 2024-10-10T10:22:06.84631708:00 IPC Receiver dump detected. Sender instance 2 Receiver pnum 277 ospid 377527 [oraclezxsszpt-sjkfwq1 (PPA6)], pser 124403 2024-10-1…

飞行机器人专栏(十六)-- 双臂机器人体感交互式控制

目录 1. 概要 2. 整体架构流程 3. 控制系统设计 3.1 Vision-based Human-Robot Interaction Control 3.2 Human Motion Estimation Approach 4. 实现方法及实验验证 4.1 System Implementation 4.2 Experimental Setup 4.3 Experimental Results 5. 小结 ​​​​​​​ 1. 概…

Qt Creator 通过python解释器调用*.py

全是看了大佬们的帖子&#xff0c;结合chatGPT才揉出来。在此做个记录。 安装python在Qt Creator *.pro 文件中配置好环境来个简单的example.py调用代码安装pip添加opencv等库调用包含了opencv库的py代码成功 *.pro配置&#xff1a; INCLUDEPATH C:\Users\xuanm\AppData\Lo…

接口测试-day3-jmeter-2组件和元件

组件和元件&#xff1a; 组件&#xff1a;组件指的是jmeter里面任意一个可以使用的功能。比如说查看结果树或者是http请求 元件&#xff1a;元件指是提对组件的分类 组件的作用域&#xff1a;组件放的位置不一样生效也不一样。 作用域取决于组件的的层级结构并不取决于组件的…

论文阅读:OpenSTL: A Comprehensive Benchmark of Spatio-Temporal Predictive Learning

论文地址&#xff1a;arxiv 摘要 由于时空预测没有标准化的比较&#xff0c;所以为了解决这个问题&#xff0c;作者提出了 OpenSTL&#xff0c;这是一个全面的时空预测学习基准。它将流行的方法分为基于循环和非循环模型两类。OpenSTL提供了一个模块化且可扩展的框架&#xff…