gpt4 book ai didi

r - 使用 ggplot2 geom_tile() 突出显示由集群定义的图 block 组

转载 作者:行者123 更新时间:2023-12-04 02:44:42 25 4
gpt4 key购买 nike

我使用 ggplot2 检查数据集的某些聚类。如果我能够通过在它们周围画一个框或其他东西来突出属于同一集群的节点组,那就太好了。您将在下面找到一些示例代码,这些代码重现了我正在尝试做的事情,但真实数据一如既往地更加困惑。 :)

我四处寻找并找到了这个解决方案 here一个稍微不同的问题。理想情况下,在我的例子中,边界只会画在集群的外部。

set.seed(1916)
# what cluster do each user belong to?
cl_df = tibble(user = 1:100, cl = rep(1:3, c(20,30,50)))

df_example =
# create the grid
expand.grid(user_1 = 1:100, user_2 = 1:100) %>% as_tibble %>%
mutate(cl_1 = plyr::mapvalues(user_1, cl_df$user, cl_df$cl),
cl_2 = plyr::mapvalues(user_2, cl_df$user, cl_df$cl),
same_cl = cl_1 == cl_2,
value = ifelse(same_cl, rnorm(sum(same_cl),1,1), rnorm(sum(!same_cl),2,1)))

df_example %>%
ggplot(data = ., aes(x = reorder(user_1, cl_1),
y = reorder(user_2, cl_2),
fill = value)) +
geom_tile() +
scale_fill_gradientn(colours = terrain.colors(10)) +
xlab('') +
ylab('') +
theme(axis.text.x=element_blank(),
axis.ticks.x=element_blank(),
axis.text.y=element_blank(),
axis.ticks.y=element_blank())

在上面的例子中,沿着对角线有三个集群,我想在每个集群周围用一个框突出显示。

提前致谢(我即将进入可能只是我们 MS 绘画的阶段!)

最佳答案

ggforce 中的geom_mark_* 函数对这项任务很有帮助。在这种情况下,我们可以指定每个 cl_1 组都需要一个,并且我们只想使用 same_cl 突出显示数据。

 ...
ggforce::geom_mark_rect(aes(group = cl_1, filter = same_cl),
expand = 0, radius = 0)

enter image description here

关于r - 使用 ggplot2 geom_tile() 突出显示由集群定义的图 block 组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57682919/

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