使用 ggplot (R) 重新排序 Sankey 图的 y 轴

问题描述 投票:0回答:1

我的数据中有三个节点,用于创建附加的桑基图。我已经编辑了每个节点的标签。 y 轴上的顺序是按字母顺序排列的。这会产生一些交叉的“扫描”(我突出显示了黄色)。

我可以定义每个节点沿 y 轴的顺序吗?我想通过消除重叠扫描来改进图表。这是我用来创建绘图的代码。

ggplot(dfs2, 
       aes(x = x
           , id = id
           , split = y
           , value = 1
           , node=)) +
  geom_parallel_sets(aes(fill = factor(VST)), alpha = 0.5, 
                     axis.width = aw, sep = sp) +
  geom_parallel_sets_axes(axis.width = aw, sep = sp) +
  geom_parallel_sets_labels(colour = "black", 
                            angle = 0, size = 3.5,
                            axis.width = aw, sep = sp) +
  theme(axis.title = element_blank()
        , axis.text.y = element_blank()
        , axis.text.x = element_blank()
        , axis.ticks = element_blank()
        , panel.grid = element_blank())

Sankey

我已经研究了一些因素,但还没有完全掌握这个概念。希望手动指定订单。

r ggplot2 sankey-diagram
1个回答
0
投票

您应该做的是首先为三个节点创建一个自定义顺序的向量,例如:

myOrder <- c("Node 1", "Node 2", "Node 3") # you should replace the names Node 1 or 2 or 3 with actual node names

然后,使用向量“myOrder”将变量“split”转换为因子。

dfs2$split <- factor(dfs2$split, levels = myOrder)

然后更改代码,使用 ggplot 代码中分解的“split”变量:

ggplot(dfs2, 
       aes(x = x,
           id = id,
           split = split,
           value = 1,
           node = )) +
  geom_parallel_sets(aes(fill = factor(VST)), alpha = 0.5, axis.width = aw, sep = sp) +
  geom_parallel_sets_axes(axis.width = aw, sep = sp) +
  geom_parallel_sets_labels(colour = "black",  angle = 0, size = 3.5, axis.width = aw, sep = sp) +
  theme(axis.title = element_blank(),
        axis.text.y = element_blank(),
        axis.text.x = element_blank(),
        axis.ticks = element_blank(),
        panel.grid = element_blank())

由于我没有您提供的完整代码或数据,只是想到了这一点...请检查并恢复您得到的内容?

© www.soinside.com 2019 - 2024. All rights reserved.