如何在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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...