原标题:Maptree-层级结构数据展示的绝佳尝试

送书回馈

《Python数据分析与大数据处理从入门到精通》

内容简介:《Python数据分析与大数据处理从入门到精通》主要讲解数据分析与大数据处理所需的技术、基础设施、核心概念、实施流程。从编程语言准备、数据采集与清洗、数据分析与可视化,到大型数据的分布式存储与分布式计算,贯穿了整个大数据项目开发流程。本书轻理论、重实践,目的是让读者快速上手。

第1篇首先介绍了Python的基本语法、面向对象开发、模块化设计等,掌握Python的编程方式。然后介绍了多线程、多进程及其相互间的通信,让读者对分布式程序有个基本的认识。第2篇介绍了网络数据采集、数据清洗、数据存储等技术。第3篇介绍了Python常用的数据分析工具,扩展了更多的数据清洗、插值方法,为*终的数据可视化奠定基础。第4篇是大数据分析的重点。首先介绍了Hadoop的框架原理、调度原理,MapReduce原理与编程模型、环境搭建,接着介绍了Spark框架原理、环境搭建方式,以及如何与Hive等第三方工具进行交互,还介绍了**的结构化流式处理技术。第5篇通过三个项目实例,综合介绍了如何分析网页、如何搭建分布式爬虫、如何应对常见的反爬虫、如何设计数据模型、如何设计架构模型、如何在实践中综合运用前四篇涉及的技术。本书既适合非计算机专业的编程“小白”,也适合刚毕业或即将毕业走向工作岗位的广大毕业生,以及已经有编程经验,但想转行做大数据分析的专业人士。同时,还可以作为广大职业院校、电脑培训班的教学参考用书。

阅读原文可达京东购买链接:

https://item.jd.com/12740890.html

福利:留言点赞第1位的朋友可以免费获得该书1本,截至日期11月8日。

一般而言我们展示层级结构使用的是进化树。相关工具有很多,例如MEGAN,ggtree,iTOL,Graphlan等,这次要刷新认识了,Maptree;Maptree的中文介绍似乎不多,基于R语言绘制相关图表资料较少。最近science的图表中第一幅主图使用Maptree展示,让我们惊艳到了。Science:病原菌激活植物内生菌群的抑病功能。通过宏基因组提取16S rRNA基因序列注释细菌群落并统计不同门类细菌差异,最大的圈代表门水平,逐渐缩小的圈按照梯度分别代表纲,科,属。不同颜色标记处差异的微生物。相比于我们graphlan别有一番趣味。这里带大家一起探索这个图表的奥秘。

Maptree

圆形填充表示层次结构:最大的圆圈(层次结构的起点)包含几个大圆圈(级别1),其中包含较小的圆圈(级别2),依此类推。等等。最后一个级别称为叶。

输入数据是节点之间的边的数据框和节点的数据框文件。边文件有两列,这两列的每一行有一个包含关系。如果A被B包含,B被C包含,那么C包含A。这样的一对数字则构成了我们做Maptree的原始输入。

边文件格式要求

节点文件即为全部节点即可。通过一个简单的实例我们来进行一个基本了解

有关ggraph包我们在志气啊已经进行过介绍:参见。igraph包作为最大牌的网络图工具值得大家进行学习,具体参见.

通过vertices参数指定节点的属性,这里通过增加vertices列的数量来添加任何属性,包括需要映射的颜色,形状,大小等等。

# 载入包

library(ggraph)

library(igraph)

library(tidyverse)

# 提取边文件

edges

# 提取节点文件

vertices

# 构建igraph对象

mygraph

# 出图

ggraph(mygraph, layout = 'circlepack') +

geom_node_circle +

theme_void

布局转化

这一图形同一下图形之间是可以轻松转化的,只需要修改layout参数。

ggraph(mygraph, layout= 'dendrogram', circular= TRUE) +

geom_edge_diagonal +

theme_void +

theme(legend. position= "none")

类似树图的展示

这种方式展示树图让让不同分支产生了流动的效果。

ggraph(mygraph, layout= 'dendrogram', circular= FALSE) +

geom_edge_diagonal +

theme_void +

theme(legend. position= "none")

将圈树化为水平展示

设置circular=T参数,默认设置。

ggraph( mygraph, 'treemap', weight = 'size') +

geom_node_tile( aes( fill= depth), size = 0.25) +

theme_void +

theme( legend.position= "none")

ggraph( mygraph, 'partition', circular = TRUE) +

geom_node_arc_bar( aes( fill= depth), size = 0.25) +

theme_void +

theme( legend.position= "none")

使用igeaph网络布局展示 ggraph( mygraph) +

geom_edge_link +

geom_node_point +

theme_void +

theme( legend.position= "none")

配色和标签设置

# 载入包

library(tidyverse)

library(viridis)

# 同样导入边和节点数据

edges=flare$ edges

vertices= flare$ vertices

str( edges)

head( edges)

## 构造网络对象

mygraph

出图函数是ggraph,提供将igraph对象通过layout的定义转换为相应的ggplot坐标并输出数据框。这很重要,因为后面的geom都是基于这个数据框来出图的。出图函数geom_node_circle:同ggplot2中的geom对象一样的用法。不过这里的depth似乎不太好理解,因为这是转化后的自带列名。作用时将maptreee按照登记分为几个部分。填充上对应的数字。从0开始逐渐递增代表了层级越来越低。本次通过depth来对图形进行填充颜色。scale_fill_manual用于指定填充颜色,values指定颜色,这是一组向量,需要使用目标填充列对颜色进行署名,来指定对应的颜色。scale_color_manual来定义边框颜色,这里除了最外层,都被设置成黑色了。

# Hide the first level (right)

ggraph(mygraph, layout = 'circlepack', weight= "size") +

geom _node_circle(aes(fill= as.factor(depth), color = as.factor(depth) )) +

scale _fill_manual(values=c("0" = "white", "1" = viridis(4)[1], "2"= viridis( 4) [2], "3"= viridis( 4) [3], "4"=viridis( 4) [4])) +

scale _color_manual( values=c("0" = "white", "1" = "black", "2" = "black", "3" = "black", "4"="black")) +

theme _void+

theme(legend.position= "FALSE")

# Second one: hide 2first levels

更改配色我们就很轻易得到了下面的图形:

ggraph( mygraph, layout = 'circlepack', weight= "size") +

geom_node_circle( aes( fill= as.factor( depth), color = as.factor( depth) )) +

scale_fill_manual( values=c( "0"= "white", "1"= "white", "2"= magma( 4)[ 2], "3"= magma( 4)[ 3], "4"=magma( 4)[ 4])) +

scale_color_manual( values=c( "0"= "white", "1"= "white", "2"= "black", "3"= "black", "4"= "black") ) +

theme_void +

theme( legend.position= "FALSE")

添加标签

geom_node_text用于添加标签,使用方法和geom_text类似。

# 重现导入边和节点数据,方便重复

edges %

filter(to %in% from) %>%

droplevels

vertices %

filter(name %in% c(edges$from, edges$to)) %>%

droplevels

vertices$size

# 构造对象

mygraph

ggraph(mygraph, layout = 'circlepack', weight="size" ) +

geom_node_circle(aes(fill= depth)) +

geom_node_text( aes(label=shortName, filter=leaf, fill=depth, size=size)) +

theme_void+

theme(legend.position="FALSE") +

scale_fill_viridis

《R语言数据可视化之美》增强版

责任编辑:

python画层次结构图_Maptree-层级结构数据展示的绝佳尝试相关推荐

  1. Maptree-层级结构数据展示的绝佳尝试

    一般而言我们展示层级结构使用的是进化树.相关工具有很多,例如MEGAN,ggtree,iTOL,Graphlan等,这次要刷新认识了,Maptree:Maptree的中文介绍似乎不多,基于R语言绘制相 ...

  2. python画神经网络结构图_神经网络结构画图

    参考代码:https://github.com/gwding/draw_convnet 环境 本地:win10+python3+tensorflow 0.12rc 远程ssh:Ubuntu14+pyt ...

  3. 用python画风景图_数据分析与展示---Matplotlib基本绘图函数

    一:基本绘图函数(这里介绍16个,还有许多其他的) 二:pyplot饼图plt.pie的绘制 三:pyplot直方图plt.hist的绘制 (一)修改第二个参数bins:代表直方图的个数,均分为多段, ...

  4. 请画出计算机系统层次结构图,计算机系统结构

    <计算机系统结构> 1.并行性 2.一次重叠 3.信息按整数边界存储 4.模拟 5.仿真 6.在输入输出系统中,集中式的总线控制方式常见的有哪三种? 7.软件的可移植性 8.主存空间数相关 ...

  5. 运用python进行层次聚类

    运用python进行层次聚类 学习scipy库 很重要呀 需要引入的类 import pandas as pd import matplotlib.pyplot as plt import seabo ...

  6. echarts词云图形状_怎么用Python画出好看的词云图?

    相信很多人在第一眼看到下面这些图时,都会被其牛逼的视觉效应所吸引,这篇文章就教大家怎么用Python画出这种图. 前期准备 上面的这种图叫做词云图,主要用途是将文本数据中出现频率较高的关键词以可视化的 ...

  7. python 画云图_【词云图】如何用python的第三方库jieba和wordcloud画词云图

    一直想学一下如何用python画词云图,觉得很好玩,本文就写一下我自己的一些尝试. 1.提前准备 一般准备以下四样就可以啦. 第一,电脑安装python,我装的是3.6. 第二,安装第三方库jieba ...

  8. python画-如何用Python画各种著名数学图案 | 附图+代码

    原标题:如何用Python画各种著名数学图案 | 附图+代码 用Python绘制著名的数学图片或动画,展示数学中的算法魅力. Mandelbrot 集 代码:46 lines (34 sloc) 1. ...

  9. 如何用python画出中国地图-用Python画中国地图(二)

    在上一篇文章<用Python画一个中国地图>中,我们简单描述了一下如何用Python快速画出一个中国地图的轮廓,似乎没有什么实用价值,这一次我们用实际数据填充它,使它看上去更有意义. 上色 ...

最新文章

  1. 【支付专区】之解析微信支付返回xml
  2. ArrayList LinkedList与HashMap 实现原理
  3. 【Tools】vim YouCompleteMe自动补全配置与使用
  4. session 原理
  5. kafka学习(一)初识kafka
  6. 【01】视C++为一个语言联邦
  7. C++primer第十章 泛型算法 10.3 定制操作
  8. webapp入门到实战_web前端入门到实战:前端高手在CSS 开发效率的必备片段
  9. Tomcat Manager服务启用
  10. 图像分类任务中的tricks总结
  11. JavaMail---简介
  12. 基层干部计算机培训方案,基层管理干部培训方案
  13. 十二个“一”---十二位胜似亲人的悲情向团体详解
  14. 实习生去公司都干些啥
  15. c++ 11 中显式默认设置的函数和已删除的函数 总结
  16. 【Java项目-飞翔的小鸟】附源码
  17. android 开发闪屏动画,Android闪屏效果实现方法
  18. 高效实现统计分析(按日,月,周)查询功能
  19. 常见的电子邮箱有哪些?电子邮箱品牌大全
  20. 如何批量一键下单寄快递

热门文章

  1. 2021世界上“最猎奇”“最难的”六大编程语言
  2. 工业相机之全局曝光与卷帘曝光
  3. 【OpenCV 4开发详解】图像噪声的种类与生成
  4. 栈与队列7——单调栈结构(进阶问题)
  5. 散列表查找(哈希表)
  6. java B2B2C Springcloud多租户电子商城系统-(七)高可用的分布式配置中心(Spring Cloud Config)...
  7. 下载、安装、配置 java jdk1.8
  8. AC3 bit allocation
  9. Python显示图像
  10. 黄聪:《跟黄聪学WordPress插件开发》