微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在Rggforce中调整Sankey图中的高度和间距?

如何解决如何在Rggforce中调整Sankey图中的高度和间距?

我有一个ggforce::geom_parallel_sets 制作的桑基图/冲积图。

由于出发地和目的地的类别数量不同(出发地三个,目的地两个),因此它们之间存在高度差异。我想让它们具有相同的高度,这将涉及增加两个目的地类别之间的间隔,但我不知道如何实现这一点。

注意:我确实需要这些休息时间,即根本不能没有休息时间;只需要增加目的地中断处的空间,使其与原点高度相同。另外,我宁愿坚持 ggforce(除非您可以在 ggalluvial 中休息)。

任何帮助将不胜感激 - 下面的代码输出所需的效果

library(tidyverse)
library(ggforce)

oclassuni <- structure(list(oclass = c("1st","1st","2nd","3rd","3rd"),uni = c("degree","no degree","degree","no degree"),Freq = c(520,719,1186,871,633,2626,520,2626),Perc = c(42,58,57.7,42.3,19.4,80.6,42,80.6),id = c(1L,2L,3L,4L,5L,6L,1L,6L),x = c("oclass","oclass","uni","uni"),y = c("1st","no degree")),row.names = c(NA,-12L),groups = structure(list(
    oclass = c("1st",.rows = structure(list(c(1L,7L,8L),c(3L,9L,10L),c(5L,11L,12L)),ptype = integer(0),class = c("vctrs_list_of","vctrs_vctr","list"))),3L),class = c("tbl_df","tbl","data.frame"),.drop = TRUE),class = c("grouped_df","tbl_df","data.frame"))

ggplot(oclassuni,aes(fct_relevel(x,"oclass"),id = id,split = y,value = Perc)) +
  geom_parallel_sets(aes(fill = oclass,alpha = uni),axis.width = 3,sep = 0.05) +
  scale_fill_manual(values = c("#5D6BA3","#E3280B","#158248")) +
  scale_alpha_manual(values = c(0.8,0.6)) +
  theme_minimal() +
  theme(axis.title.y = element_blank(),axis.title.x = element_blank(),axis.text.y = element_blank(),axis.text.x = element_blank(),legend.position = "none",plot.title = element_text(hjust=0.5,size=18),panel.grid.major = element_blank(),panel.grid.minor = element_blank(),panel.border = element_blank(),panel.background = element_blank())

enter image description here

编辑:我已经使用了 sep 参数,sep = c(0.025,0.05) 给出了以下内容,但是现在原点(!)中有不均匀的空格,而 sep 不会采用三个值...有什么想法吗?

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。