前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >(文末送书)绘图技巧 | Voronoi Treemap 绘制技巧分享

(文末送书)绘图技巧 | Voronoi Treemap 绘制技巧分享

作者头像
DataCharm
发布2021-04-16 12:03:08
1.1K0
发布2021-04-16 12:03:08
举报

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

网友提供样例

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

SysbioTreemaps包绘制

  • 「官网」

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

  • 「官网样例」
  1. 导入数据及简单处理
代码语言:javascript
复制
library(SysbioTreemaps)
#导入样例数据
data(mtcars)
#构造新列(划分等级依据)
mtcars$car_name = gsub(" ", "\n", row.names(mtcars))
  1. 使用voronoiTreemap函数构造绘图数据
代码语言:javascript
复制
tm01 <- SysbioTreemaps::voronoiTreemap(
  data = mtcars,
  levels = c("gear", "car_name"),
  cell_size = "wt",
  shape = "rounded_rect",
  seed = 123
)
  1. 使用drawTreemap将结果展示
代码语言:javascript
复制
drawTreemap(tm01, label_size = 2.5, label_color = "white")

drawTreemap example

  1. 定制化绘制 drawTreemap()函数提供以下多种参数用于更改绘制结果:
代码语言:javascript
复制
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
)

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

代码语言:javascript
复制
# 设置形状(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

  1. 一次绘制多个图形 小伙伴们可能也看到layout、position和add等参数了,这些参数可以让你一次绘制多个图形,具体例子图下:
代码语言:javascript
复制
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

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

voronoiTreemap包绘制

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

  1. 官网

https://github.com/uRosConf/voronoiTreemap

  1. 基本用法
代码语言:javascript
复制
library(voronoiTreemap)
data(ExampleGDP)
gdp_json <- vt_export_json(vt_input_from_df(ExampleGDP))
vt_d3(gdp_json)

base Example

  1. 定制化操作 vt_d3()函数提供的属性参数就那么几个,如下:
代码语言:javascript
复制
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")

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

代码语言:javascript
复制
vt_d3(gdp_json,label = FALSE, color_border = "#000000", size_border = "2px")

custom set example

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

总结

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-04-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DataCharm 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • SysbioTreemaps包绘制
  • voronoiTreemap包绘制
  • 总结
相关产品与服务
图数据库 KonisGraph
图数据库 KonisGraph(TencentDB for KonisGraph)是一种云端图数据库服务,基于腾讯在海量图数据上的实践经验,提供一站式海量图数据存储、管理、实时查询、计算、可视化分析能力;KonisGraph 支持属性图模型和 TinkerPop Gremlin 查询语言,能够帮助用户快速完成对图数据的建模、查询和可视化分析。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档