簡體   English   中英

如何使用 ggalluvial 包在 ggplot2 中創建沖積地塊?

[英]How to create an alluvial plot in ggplot2 with ggalluvial package?

我正在嘗試使用ggalluvial包在ggplot2中創建一個沖積地塊。 這是我用來創建情節的兩個有用的網站: site 1site 2

我的目標是使用站點 1 上的相同代碼,但將其應用於我自己的 df,如下所示。 但是,每次我嘗試這樣做時,都會收到以下錯誤:

data.frame 中的錯誤(first_row,curve_data):參數暗示不同的行數:1、12

這是我的df:

t1 <- c("college", "college", "college", "university", "university")
t2 <- c("law", "law", "business", "business", "business")
t3 <- c("public", "private", "private", "private", "public")
t4 <- c(2,4,6,8,10)

df <- data.frame(cbind(t1,t2,t3,t4))
names(df) <- c("Undergrad", "Grad_School", "Sector", "Freq")

這是從站點 1 復制的原始代碼:

library(ggalluvial)
vaccinations
ggplot(data = vaccinations,
       aes(axis1 = survey,
           axis2 = response,
           axis3 = survey,
           y = freq)) +
    geom_alluvium(aes(fill = response)) +
    geom_stratum() +
    geom_text(stat = "stratum",
              aes(label = after_stat(stratum))) +
    scale_x_discrete(limits = c("Survey", "Response"),
                     expand = c(0.15, 0.05)) +
    theme_void() 

這是我的代碼,我的 df 被替換了。

ggplot(data = df,
       aes(axis1 = Undergrad,
           axis2 = Grad_School,
           y = Freq)) +
    geom_alluvium(aes(fill = Sector)) +
    geom_stratum() +
    geom_text(stat = "stratum",
              aes(label = after_stat(stratum))) +
    scale_x_discrete(limits = c("Undergrad", "Grad_School"),
                     expand = c(0.15, 0.05)) +
    theme_void()

當您cbind()您的向量時,您會創建一個matrix (與data.frame不同)不能包含不同的數據類型。 因此, Freq被轉換為character 如果您只是直接創建沒有cbind()data.frame ,它可以正常工作。

library(tidyverse)
library(ggalluvial)

t1 <- c("college", "college", "college", "university", "university")
t2 <- c("law", "law", "business", "business", "business")
t3 <- c("public", "private", "private", "private", "public")
t4 <- c(2,4,6,8,10)

df <- data.frame(t1,t2,t3,t4)
names(df) <- c("Undergrad", "Grad_School", "Sector", "Freq")

ggplot(data = df, 
       aes(axis1 = Undergrad,
             axis2 = Grad_School,
             y = Freq)) +
  geom_alluvium(aes(fill = Sector)) +
  geom_stratum() +
  geom_text(stat = "stratum",
            aes(label = after_stat(stratum))) +
  scale_x_discrete(limits = c("Undergrad", "Grad_School"),
                   expand = c(0.15, 0.05)) +
  theme_void()

reprex 包(v2.0.1)於 2022-07-18 創建

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM