前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >跟着PNAS学绘图|树状地图

跟着PNAS学绘图|树状地图

作者头像
R语言数据分析指南
发布2023-09-26 10:07:06
2010
发布2023-09-26 10:07:06
举报
文章被收录于专栏:R语言数据分析指南

❝本节来尝试绘制「PNAS」中的一张论文图,树状地图由于作者为提供原始数据,小编自己导入数据进行了图形绘制,过程仅参考,希望各位观众老爷能够喜欢。数据代码已经整合上传到2023VIP交流群,加群的观众老爷可自行下载,有需要的朋友可关注文末介绍加入VIP交流群

论文

论文图

加载R包

代码语言:javascript
复制
library(tidyverse)
library(ggtext)
library(glue)
#install.packages("rcartocolor")
library(rcartocolor)
library(VoronoiPlus) 
# devtools::install_github("AllanCameron/VoronoiPlus")

导入数据

代码语言:javascript
复制
all_countries <- read_csv("all_countries.csv")
country_regions <- read_csv("country_regions.csv")
global_economic_activity <- read_csv("global_economic_activity.csv")
global_human_day <- read_csv("global_human_day.csv")

数据清洗

代码语言:javascript
复制
au_data <- all_countries |> 
  select(Category, Subcategory, hoursPerDayCombined, country_iso3) |> 
  left_join(country_regions, by = "country_iso3") |> 
  filter(country_name == "Australia") |> 
  select(Category, Subcategory, hoursPerDayCombined)

构建绘图数据

代码语言:javascript
复制
au_vor <- voronoi_treemap(hoursPerDayCombined ~ Category + Subcategory,
                          data = au_data)
                          
set.seed(1234)
groups <- filter(au_vor, level == 1)

subgroups <- filter(au_vor, level == 2) |> 
  group_by(group) |> 
  mutate(alpha = runif(1, 0, 0.6)) |> 
  ungroup()

r <- 1.1
theta <- seq(0, (2 * pi), length.out = 13)[1:12]
clock_data <- tibble(
  x = r * cos(theta),
  y = r * sin(theta),
  angle = 90 + 360 * (theta / (2 * pi)),
  label = c("III", "II", "I", "XII", "XI", "X", "IX", "VIII", "VII", "VI", "V", "IV")
)
theta2 <- seq(0, (2 * pi), length.out = 61)[1:60]
clock_data2 <- tibble(
  x = r * cos(theta2),
  y = r * sin(theta2))
clock_data3 <- tibble(
  x = c(0.9, 0.7) * cos(theta[c(2, 6)]),
  y = c(0.9, 0.7) * sin(theta[c(2, 6)]),
  grp = c(1, 2)
)

定义颜色

代码语言:javascript
复制
cols_vec = rcartocolor::carto_pal(length(unique(au_data$Category))+1, "Prism")[1:length(unique(au_data$Category))]
names(cols_vec) = unique(au_data$Category)

highlight_col <- cols_vec[1]

数据可视化

代码语言:javascript
复制
ggplot() +
  geom_polygon(data = groups,mapping = aes(x = x, y = y, group = group, fill = group),
               colour = "#fafafa",linewidth = 1) +
  geom_polygon(data = subgroups,
               mapping = aes(x = x, y = y, group = group, alpha = alpha),
               fill = "#fafafa",colour = "#fafafa",linewidth = 0.3) +
  geom_label(data = clock_data,
             mapping = aes(x = x, y = y, label = label),
             size = 8,label.size = 0,fill = "#fafafa",
             colour = "grey10",fontface = "bold")+
  geom_point(data = data.frame(),mapping = aes(x = 0, y = 0),
             size = 3,colour = "grey10") +
  geom_segment(data = clock_data3,
               mapping = aes(x = 0, y = 0, xend = x, yend = y, group = grp),
               linewidth = 1,
               colour = "grey10") +
  geom_point(data = clock_data2,
             mapping = aes(x = x, y = y),
             size = 0.5,
             colour = "grey10") +
  scale_alpha_identity() +
  scale_fill_manual(values = cols_vec) +
  coord_equal() +
  theme_void(base_size = 12) +
  theme(
    legend.background = element_blank(),
    legend.spacing.x = unit(0,"in"),
    legend.key.height = unit(0.2,"in"),
    legend.key.width = unit(0.2,"in"),
    legend.title = element_blank(),
    plot.background = element_rect(fill = "#fafafa", colour = '#fafafa'),
    panel.background = element_rect(fill = "#fafafa", colour = "#fafafa"),
    plot.margin = margin(10, 10, 10, 10))

❝本节内容介绍到此结束,过程仅供参考;有需要学习个性化数据可视化的朋友,欢迎到小编的「淘宝店铺」 「R语言数据分析指南」购买「2023年度会员文档」同步更新中「售价149元」,内容主要包括各种「高分论文的图表分析复现以及一些个性化图表的绘制」均包含数据+代码;按照往年数据小编年产出约在150+以上 ❞

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

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