使用 plotly 绘制旭日图

简介: 使用 plotly 绘制旭日图

简介

最近需要绘制一个图来说明不同类别之间的层次结构。于是想到了旭日图(多层饼图)。类似于以下图形:

来源于:《R语言数据可视化之美》

这种图表将数据层次结构呈现为一个圆形区域,其中每个环代表一个层级,而每个扇区表示该层级下的子类别或分支。每个圆环代表层次结构中的一个级别,中心圆点表示根节点,层次结构从这个点往外推移。

注意:旭日图常用于可视化具有多级分类的数据,例如组织架构、文件目录、产品分类等。它能够帮助用户快速理解数据的结构和组成,并从整体和局部两个层面上进行分析和比较。

本教程将使用 plotly[1] 构建旭日图。通过一个简单的案例来说明,读者可以通过替换数据集,即可轻松为己所用。

注意:为小编在科研中学习的笔记,如果觉得有帮助,欢迎一键三连!类似文章如:使用 ggpubr 包制图使用 ggcharts 高亮部分内容基于 ggridges 绘制剩余使用寿命密度图使用 ggTimeSeries 包构建日历图

教程

本教程主要参考 plotly 官网例子[2],相关教程还可在《R语言数据可视化之美》P253页[3]Custom interactive sunbursts with ggplot in R[4]初探R语言可视化交互式包plotly——旭日图[5]中找到。

完整代码和数据可在我的 Github 中找到:https://github.com/liangliangzhuang/R_example。欢迎关注和 star。

# 安装包
install.packages('plotly')

数据介绍

在绘制图形中,最为关键的一步是整理数据。这里以一个简单的数据集作为案例,读者只需要了解表格是如何构成,并根据实际情况进行替换即可。

d <- data.frame(
    ids = c(
    "North America", "Europe", "Australia", "North America - Football", "Soccer",
    "North America - Rugby", "Europe - Football", "Rugby",
    "Europe - American Football","Australia - Football", "Association",
    "Australian Rules", "Autstralia - American Football", "Australia - Rugby",
    "Rugby League", "Rugby Union"
  ),
  labels = c(
    "North<br>America", "Europe", "Australia", "Football", "Soccer", "Rugby",
    "Football", "Rugby", "American<br>Football", "Football", "Association",
    "Australian<br>Rules", "American<br>Football", "Rugby", "Rugby<br>League",
    "Rugby<br>Union"
  ),
  parents = c(
    "", "", "", "North America", "North America", "North America", "Europe",
    "Europe", "Europe","Australia", "Australia - Football", "Australia - Football",
    "Australia - Football", "Australia - Football", "Australia - Rugby",
    "Australia - Rugby"
  ),
  stringsAsFactors = FALSE
)

此时,数据结构如下所示:

由三列组成,其中 ids 表示名称,labels 表示标签,parents 表示对应的父节点,如果没有父节点,可以用""表示。

关键点:需要把每个节点之间的关系描述清楚。笨办法:画个手稿,根据手稿一条条写。

或者你可以直接构造一个 .csv 文件,进行导入,类似:

d <- read.csv("d.csv")

绘图

数据构建完毕后,绘图就是一行代码的事情了~

fig <- plot_ly(d, ids = ~ids, labels = ~labels, parents = ~parents, type = 'sunburst')
fig

plotly 绘制得到的是 HTML 文件,可以进行交互。读者可以通过点击不同区域进行交互,例如:

当然,plot_ly() 中包含很多参数,包括 maxdepth 显示最大深度结构可视化。color 修改颜色,size 修改尺寸等。此外还可在该图基础上,通过管道函数继续添加内容,设置不同区块的比例等。拓展内容可见官网[6],这里不做具体介绍了(太多啦!)。

保存 PDF 图形

如果你想将该图用到科研论文中(存储为 PDF),还需要进行以下操作:

  • 第一种方法:

首先需要在操作系统上安装 orca[7] 库(需要点时间)。之后使用代码:

orca(fig, "fig.pdf")
  • 第二种方法:

输出为 Web Page,然后通过打印的形式保存为 PDF,可能还需要使用裁剪 PDF 的工具,例如:avepdf[8]

参考资料

[1]

plotly: https://plotly.com/graphing-libraries/

[2]

例子: https://plotly.com/r/sunburst-charts/

[3]

《R语言数据可视化之美》P253页: https://github.com/EasyChart/Beautiful-Visualization-with-R

[4]

Custom interactive sunbursts with ggplot in R: https://www.pipinghotdata.com/posts/2021-06-01-custom-interactive-sunbursts-with-ggplot-in-r/

[5]

初探R语言可视化交互式包plotly——旭日图: https://zhuanlan.zhihu.com/p/111884353

[6]

官网: https://plotly.com/r/sunburst-charts/

[7]

orca: https://github.com/plotly/orca#installation

[8]

avepdf: https://avepdf.com/zh/crop-pdf

目录
相关文章
|
开发者
查看edge浏览器插件的安装位置并将插件安装到别的浏览器
查看edge浏览器插件的安装位置并将插件安装到别的浏览器
1438 1
|
算法 数据可视化 数据挖掘
使用Python实现层次聚类算法
使用Python实现层次聚类算法
338 1
|
Java 数据库连接 Maven
手把手教你如何搭建SSM框架、图书商城系统案例
这篇文章是关于如何搭建SSM框架以及实现一个图书商城系统的详细教程,包括了项目的配置文件整合、依赖管理、项目结构和运行效果展示,并提供了GitHub源码链接。
手把手教你如何搭建SSM框架、图书商城系统案例
|
8月前
|
人工智能 安全 大数据
【限时特惠】阿里云服务器7折抢购!高性能+高性价比,开发者与企业必备攻略
阿里云服务器限时7折特惠,高性能、高性价比,为开发者和企业量身打造!新老用户均可参与,灵活配置满足多种需求,全球节点低延迟覆盖。自研神龙架构保障稳定性,安全防护全面,操作便捷,生态丰富。适用于个人开发、企业部署、跨境业务及AI计算等场景。点击专属链接立即抢购,活动名额有限,速来享受云端算力带来的高效体验!
216 0
|
数据可视化 数据挖掘 BI
三万字长文详解神级绘图框架 plotly
三万字长文详解神级绘图框架 plotly
2396 14
|
Web App开发 Ubuntu 安全
Linux中的certutil命令:处理证书与证书数据库的实用工具
`certutil`是Linux下的命令行工具,用于处理X.509证书和证书数据库,常与NSS库配合,服务于Firefox等应用。安装`certutil`可通过`apt-get install libnss3-tools`(Debian/Ubuntu)或`yum/dnf install nss-tools`(RHEL/Fedora/CentOS)。基本操作包括:使用`-L`列出证书数据库中的证书,`-A`添加证书,`-D`删除证书,`-x`导出证书。此外,还能用`-M`修改信任设置,`-C`列出证书链,`-V`验证证书链的有效性。了解这些功能有助于高效管理证书。
|
SQL 关系型数据库 数据库
Postgresql基本操作命令
这些是PostgreSQL数据库的一些基本操作命令,用于创建、管理和查询数据库。根据您的需求,可以使用这些命令执行各种数据库操作。
749 4
|
数据可视化 图形学
R可视乎|圆环图
对于饼图,上一次学习《R语言数据可视化之美》的时候主要利用graphics包和ggplot包(可见R可视乎|饼图)。这几天的学习中发现还有一个更加简便的方法——ggpie包。接下来做简单描述,然后进入圆环图的学习。
696 0
R可视乎|圆环图
|
人工智能 数据可视化 数据挖掘
这图怎么画| 富集分析之双向柱状图
这图怎么画| 富集分析之双向柱状图
491 0
|
存储 缓存 JavaScript
Qt+QtWebApp开发笔记(六):http服务器html实现静态相对路径调用第三方js文件
为了解决调用一些依赖的如echarts等一些js的代码模块引入的问题,就需要静态文件了。 本篇解说StaticFileController,在返回的html文本中调用外部js文件,类似的,其他文件都是一样了,只是引入的后缀名不一样。
Qt+QtWebApp开发笔记(六):http服务器html实现静态相对路径调用第三方js文件