R 在冲积层中进行的类似可视化

R 在冲积层中进行的类似可视化,r,ggplot2,data-visualization,sankey-diagram,R,Ggplot2,Data Visualization,Sankey Diagram,我遇到过这种可视化,我正在尝试制作一个类似的 这是照片 它看起来像一个sankey,当然没有流,所以我试着做了一个sankey,得到了类似的结果,但最终没有得到类似的结果。我也试着用冲积层来做,但最终得到了一个不同的图表。 谁能给我解释一下什么叫做“如何做”吗 我试着用冲积层来做,但最终得到了一个不同的图表 这是我买的一个。数据与上面显示的示例不同 数据: 这就是我所取得的成就 这不是我想要实现的 我需要知道的事情 如何制作此可视化的精确版本。 如何只使用我拥有的数据的结果,而不是整个数据表。

我遇到过这种可视化,我正在尝试制作一个类似的

这是照片

它看起来像一个sankey,当然没有流,所以我试着做了一个sankey,得到了类似的结果,但最终没有得到类似的结果。我也试着用冲积层来做,但最终得到了一个不同的图表。 谁能给我解释一下什么叫做“如何做”吗

我试着用冲积层来做,但最终得到了一个不同的图表

这是我买的一个。数据与上面显示的示例不同

数据:

这就是我所取得的成就

这不是我想要实现的

我需要知道的事情

如何制作此可视化的精确版本。 如何只使用我拥有的数据的结果,而不是整个数据表。
谢谢

这应该让您开始:

图书馆 猫图书馆 图书馆三年 图书馆弹琴 图书馆天平 df1% 长种姓 ggplotdata=df1,aesy=value,x=fct_revname,地层=Caste,冲积层=Caste,填方=Caste+ 几何图形宽度=1/5,颜色=黑色+ 地质地层宽度=1/5+ geom_textdata=filterf1,name==Total_population,stat=strata,infer.label=TRUE,size=5,微移_x=-0.2+ geom_textaeslabel=百分比值,stat=地层,尺寸=5,颜色=白色+ 注释GEOM=文本,x=0.7,y=0.5,标签=总人口,大小=7+ 注释几何=文本,x=2.2,y=0.5,标签=罪犯,尺寸=7+ 坐标翻转+ labstitle=总人口的定罪率, x=NULL, y=NULL+ themelegend.position=无, axis.ticks=元素\空白, axis.text=元素\空白, panel.background=元素\空白 数据
由v0.3.0于2020年7月11日创建,这只是为了好玩-我接受了Peter的答案,他应该得到充分的信任,并应获得公认的答案,并进行了一些修改,使其更像问题中的示例:

代码


为免生疑问,请确认您的数据逻辑;据我所知,种姓SC的数据显示,他们占人口的17%和罪犯的20.9%?如果您将数据添加为数据框对象,例如数据,那么将有助于使您的问题重现
df <- data.frame(Caste = c("SC","ST","OBC","FC"),
                 Total_population = c(0.17, 0.09, 0.52, 0.22),
                 Convicts = c(0.209, 0.137, 0.312, 0.341))
ggplot(df,aes(y = Freq, axis1 = Details, axis2 = Caste)) +
  geom_alluvium(fill = cols ,width = 1/12) +
  geom_stratum(width = 1/12, fill = mycols, color = "grey") +
  geom_label(stat = "stratum", infer.label = TRUE) +
  scale_x_discrete(limits = c("Details", "Caste"), expand =c(.05,.05))+
  scale_fill_brewer(type = "qual", palette = "Set1") +
  ggtitle("Convict rate with total population")
df <- data.frame(Caste = c("SC","ST","OBC","FC"),
                 Total_population = c(0.17, 0.09, 0.52, 0.22),
                 Convicts = c(0.209, 0.137, 0.312, 0.341))

library(ggalluvial)
library(forcats)
library(tidyr)
library(scales)

dfl < pivot_longer(df, -Caste)

ggplot(data = dfl, aes(y = value, x = fct_rev(name), 
                       stratum = Caste, alluvium = Caste, fill = Caste)) +
  geom_flow(colour = "black", size = 3, linetype = 1, alpha = 1)+
  geom_flow(fill = "black", size = 3, linetype = 1, alpha = 0.5)+
  geom_stratum(colour = "black", size = 3)+
  geom_text(stat = "stratum", infer.label = TRUE, size = 5, 
            nudge_x = -0.2, aes(alpha = fct_rev(name)), color = "white") +
  geom_text(aes(label = percent(value)), stat = "stratum", size = 5, color = "white") +
  annotate(geom = "text", x = 0.7, y = 0.5, label = "Total population", 
           size = 10, color = "white") +
  annotate(geom = "text", x = 2.3, y = 0.5, label = "Convicts", 
           size = 10, color = "white") +
  coord_flip() +
  scale_alpha_manual(values = c(1, 0)) +
  scale_fill_manual(values = rev(c("#bbbacc", "#9d9caa", "#767583", "#585865", "#40404a"))) +
  labs(title = "Convict rate with total population",
       x = NULL,
       y = NULL)+
  theme_void() +
  theme(legend.position = "none", 
        plot.background = element_rect(fill = "black"),
        axis.ticks = element_blank(),
        axis.text = element_blank(),
        panel.background = element_blank(),
        panel.spacing = margin(0, 0, 0, 0))