gpt4 book ai didi

r - 使用 ggplot2 创建类似于 d3.js force layout 的气泡图

转载 作者:行者123 更新时间:2023-12-04 02:54:59 28 4
gpt4 key购买 nike

是否可以使用 R,最好是 ggplot2 来制作与此类似的气泡图?

enter image description here

假设本例中有三个类别,则属性为

  • 所有圆圈相互吸引(将圆圈聚集在一起)
  • 碰撞检测(停止圆圈重叠)
  • 圈子会被吸引到三个中心之一,这取决于它们的类别

来源:d3indepth.com/force-layout

数据(虽然我真的很确定数据应该是什么样子的)

set.seed(1)
dat <- data.frame(category = rep(c("A", "B", "C"), each = 10),
bubble = rep(1:10, 3),
radius = round(runif(30, min = 0.5, max = 3), 2),
stringsAsFactors = FALSE)
dat

我用 标记了它- 我不熟悉 - 尽管问题是关于 R 的。我希望吸引熟悉其中任何一个的社区成员。但请随意编辑标签和/或发帖。

谢谢。

最佳答案

需要对布局进行一些进一步的工作/调查,但这是一种方法。

library(packcircles)
library(tidyverse)

set.seed(1)
dat <- data.frame(category = rep(c("A", "B", "C"), each = 10),
id = 1:30,
radius = round(runif(30, min = 0.5, max = 3), 2),
stringsAsFactors = FALSE)

#Create layouts for each group by splitting, mapping and recombining
dat.gg <- dat %>%
split(.$category) %>%
map(~circleProgressiveLayout(.x$radius, sizetype='radius')) %>%
imap_dfr(~circleLayoutVertices(.x, npoints=50) %>% mutate(category = .y))

#Do the thing
ggplot() +
geom_polygon(data = dat.gg, aes(x, y, group = id, fill = category), colour = "black", alpha = 0.6) +
facet_wrap(~category) +
scale_fill_viridis_d() +
theme_void() +
theme(legend.position="none", plot.margin=unit(c(0,0,0,0),"cm") ) +
coord_equal()

reprex package 创建于 2018-11-20 (v0.2.1)

关于r - 使用 ggplot2 创建类似于 d3.js force layout 的气泡图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53402836/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com