如何在冲积/Sankey绘图(在GGR冲积上)的流项上添加值标签?

如何在冲积/Sankey绘图(在GGR冲积上)的流项上添加值标签?,r,ggplot2,data-visualization,sankey-diagram,dataflow-diagram,R,Ggplot2,Data Visualization,Sankey Diagram,Dataflow Diagram,我想在R上标注冲积/桑基图表的“流量”部分 地层(柱)可以很容易地进行标记,但连接它们的水流却不能。我所有的尝试都是徒劳的 在下面的示例中,“freq”应标记在流量连接部件上 库(ggplot2) 图书馆(GG) 数据(疫苗接种) 级别(疫苗接种$response)有一个选项可以获取原始数字并将其用作流部分的标签: ggplot(vaccinations, aes(x = survey, stratum = response, alluvium = subject,

我想在R上标注冲积/桑基图表的“流量”部分

地层(柱)可以很容易地进行标记,但连接它们的水流却不能。我所有的尝试都是徒劳的

在下面的示例中,“freq”应标记在流量连接部件上

库(ggplot2)
图书馆(GG)
数据(疫苗接种)

级别(疫苗接种$response)有一个选项可以获取原始数字并将其用作流部分的标签:

ggplot(vaccinations,
       aes(x = survey, stratum = response, alluvium = subject,
           y = freq,
           fill = response, label = freq)) +
  scale_x_discrete(expand = c(.1, .1)) +
  geom_flow() +
  geom_stratum(alpha = .5) +
  geom_text(stat = "stratum", size = 3) +
  geom_text(stat = "flow", nudge_x = 0.2) +
  theme(legend.position = "bottom") +
  ggtitle("vaccination survey responses at three points in time")

如果希望对如何标记这些点进行更多控制,可以提取图层数据并对其进行计算。例如,我们可以只计算起始位置的分数,如下所示:

# Assume 'g' is the previous plot object saved under a variable
newdat <- layer_data(g)
newdat <- newdat[newdat$side == "start", ]
split <- split(newdat, interaction(newdat$stratum, newdat$x))
split <- lapply(split, function(dat) {
  dat$label <- dat$label / sum(dat$label)
  dat
})
newdat <- do.call(rbind, split)

ggplot(vaccinations,
       aes(x = survey, stratum = response, alluvium = subject,
           y = freq,
           fill = response, label = freq)) +
  scale_x_discrete(expand = c(.1, .1)) +
  geom_flow() +
  geom_stratum(alpha = .5) +
  geom_text(stat = "stratum", size = 3) +
  geom_text(data = newdat, aes(x = xmin + 0.4, y = y, label = format(label, digits = 1)),
            inherit.aes = FALSE) +
  theme(legend.position = "bottom") +
  ggtitle("vaccination survey responses at three points in time")
#假设“g”是保存在变量下的上一个绘图对象
纽达特