繁体   English   中英

R 不同宽度的冲积地块?

[英]R alluvial plots with different width?

我正在尝试制作在不同列中指定不同宽度的某个冲积图。 让我试着通过绘制它来解释它,因为我不知道如何在 ggalluvial 中做到这一点。

请注意,来自 Male 框的流的宽度表示 3 个单位,而在框 3 中表示 10。是否可以在 ggalluvial 中创建这样的图形? 或者如何在 R 中构建这样的图?

我没有绘制其他流程只是为了关注从男性到 3 的流程。

冲积的

我在此想提供一些数据来创建这样的图表:

test_data <- data.table(`2018 - Gender` = c("Male", "Female", "Female", "Male"),
           `2018 - Value`  = c(10, 20, 30, 20),
           `2019 - Gender`  = c("Male", "Female", "Male", "Female"),
           `2019 - Value`  = c(20, 30, 10, 10)
           )

请注意,列名决定了图中的“列”(即 x 轴)。 而性别变量决定了块。 2018 年的值是起始宽度,而 2019 年的值是层的结束宽度。

正如一些人指出的那样,我需要更多地关注我的问题。 问题是如何制作具有不同起始和结束宽度的流程图。

也许下面的虚拟示例会给你一个更好的主意。 在绘制之前,请使用is_alluvia_form()检查您的数据是否为冲积形式。

c <- c(LETTERS[1:4], LETTERS[2:6], LETTERS[3:7], LETTERS[3:8])
t <- c(rep("Fortnight 1",4), rep("Fortnight 2",5), rep("Fortnight 3",5), rep("Fortnight 4",6))
s <- c(rep(c("Female","Male"),10))
ag <- c(2,3,4,6,11,13)
f <- rnorm(20,20,99)
df <- data.frame(Timeframe=t,Code=c,Sex=s,Freq=round(abs(f))) %>% mutate(Organization=ifelse((row_number() %in% ag), "Agencia2","Agencia1" ))

alluvial_data <- as.data.frame(df %>%select(Organization, Timeframe, Code, Freq, Sex))
alluvial_data <- alluvial_data %>% mutate(id = row_number())

#Remove duplicates
alluvial_data <- alluvial_data %>% 
  distinct(Organization, Timeframe, Code, Sex, .keep_all = TRUE)

#levels(alluvial_data$Timeframe)

# Convert Timeframe to Factor - Categorical Variable
alluvial_data$Timeframe <-as.factor(alluvial_data$Timeframe)

# Convert Code to String
alluvial_data$Code <-as.character(alluvial_data$Code)

library(RColorBrewer)

# Define the number of colors you want
nb.cols <- 10
mycolors <- colorRampPalette(brewer.pal(8, "Set2"))(nb.cols)
mycolor2 <- colorRampPalette(brewer.pal(2, "Set2"))(nb.cols)

# Chart
ggplot(alluvial_data,
       aes(y = Freq, axis1 = Organization, axis2 = Timeframe, axis3 = Code,fill=Sex)) +
  #scale_fill_brewer(type = "qual", palette = "Set2") +
  scale_x_discrete(limits=c("Organization","Timeframe","Code"), expand=c(0.05,0.05)) +
  scale_fill_manual(values = mycolors) +
  geom_flow(stat = "alluvium", lode.guidance = "frontback" #, color="grey"
             ) +
  geom_stratum(width = 1/4, fill = "cyan", color = "grey") +
  geom_label(stat = "stratum", aes(label = after_stat(stratum))) +
  theme(legend.position = "bottom") +
  ggtitle("Organizations") +
  guides(fill=guide_legend(override.aes = list(color=mycolors[1:2])))+
  labs(fill=NULL)

输出

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM