簡體   English   中英

您可以使用 R 中 ggplot2 的 ggalluvial 包跟蹤和標記單個沖積層嗎?

[英]Can you track and label a single alluvium using the ggalluvial package for ggplot2 in R?

我正在 R 中繪制沖積圖,基於 ggalluvial 小插圖中的“學生課程”示例。 我希望能夠通過在每個軸上標記沖積層來跟蹤整個圖表中的單個隊列/沖積層(在專業數據集中,單個學生)。 然而,我發現它只適用於設置為“zigzag”的lode.guidance(在geom_flow中),並且沒有其他設置。

使用小插圖示例,您可以使用學生 ID 號標記沖積物,如下所示。 我在小插圖示例中所做的唯一更改帶有注釋:

    library(ggplot2)
    library(ggalluvial)

    data(majors)
    majors$curriculum <- as.factor(majors$curriculum)
    ggplot(majors,
       aes(x = semester, stratum = curriculum, alluvium = student,
           fill = curriculum, label = student)) + #changed from label = alluvium
    scale_fill_brewer(type = "qual", palette = "Set2") +
    geom_flow(stat = "alluvium", lode.guidance = "frontback",
            color = "darkgray") + #can change lode.guidance parameter here in geom_flow
    geom_stratum() +
    geom_text(stat = "alluvium", size = 3) #added this geom_text to get the label

產生以下沖積圖:

(使用frontback的不一致流的圖像)

在顯示沖積層(學生)從軸到軸的運動時存在一些不一致之處。 一些學生在從一個軸到下一個軸的轉變中被“洗牌”。 例如,在從 CURR3 到 CURR5 的流程中,學生 10 變成了學生 2。在同一個班次中,學生 6 變成了學生 10,以此類推。

所有其他 lode.guidance 設置(向前、向右、向后、向左、前后、右左、后前、左右)都會出現同樣的問題,除了“zigzag”,它完美地顯示了它。 (使用鋸齒形正確流動的圖像)

我的問題是:使用 ggalluvial 從軸到軸跟蹤單個沖積層應該可以使用所有 lode.guidance 設置,還是這是包中的錯誤? 或者“zigzag”是唯一用於跟蹤沖積層的lode.guidance 參數嗎?

非常感謝您對此的任何幫助! 當然,使用“zigzag”適用於我的圖表,但我想讓每個人都知道這個問題就在那里,看看是否有人能解決我的困惑。

當然,無論參數設置如何,每個沖積層都應該對應一個案例。 這里的問題是,在不同的參數設置下,沖積層 stat(統計轉換)被用來在圖中生成兩個圖層: lode.guidance設置為"frontback"的流層和lode.guidance默認為"zigzag"的文本層"zigzag" 這在最近的包小插圖中進行簡要討論,但在其他方面沒有很好的記錄。

一種解決方案是確保圖中任何統計數據的每次使用都傳遞相同的參數。 另一種方法是設置一個全局參數來控制每個統計信息的默認設置。 下面兩者都被用來制作我認為你想到的情節。

library(ggalluvial)
#> Loading required package: ggplot2
data(majors)
majors$curriculum <- as.factor(majors$curriculum)
# apply the same parameter setting to every instance of the alluvium stat
ggplot(majors,
       aes(x = semester, stratum = curriculum, alluvium = student,
           fill = curriculum, label = student)) +
  scale_fill_brewer(type = "qual", palette = "Set2") +
  geom_flow(stat = "alluvium", lode.guidance = "frontback",
            color = "darkgray") +
  geom_stratum() +
  geom_text(stat = "alluvium", lode.guidance = "frontback", size = 3)

# alternatively, set a package-specific global option
options(ggalluvial.lode.guidance = "frontback")
ggplot(majors,
       aes(x = semester, stratum = curriculum, alluvium = student,
           fill = curriculum, label = student)) +
  scale_fill_brewer(type = "qual", palette = "Set2") +
  geom_flow(stat = "alluvium", color = "darkgray") +
  geom_stratum() +
  geom_text(stat = "alluvium", size = 3)

reprex 包(v0.3.0) 於 2020 年 2 月 5 日創建

暫無
暫無

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

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