當前位置:編程學習大全網 - 編程語言 - 4.ggplot2——群組幾何對象

4.ggplot2——群組幾何對象

幾何對象可以簡單分為個體幾何對象和總體幾何對象。 個體幾何對象 對數據框的每壹行數據繪制壹個可以區別於其他個體的圖形對象。例如,散點圖中每個點代表壹個觀測。 群組幾何對象 則用來表示多個觀測。這可能是統計摘要的結果,如箱線圖,也可能是幾何圖形的基礎展示,如多邊形圖。折線圖和路徑圖同時具備兩種特點:每條線由壹系列線段組成,但每條線段代表兩個點。我們如何分配並控制觀察到圖形元素?這是 group 圖形屬性的工作。

默認情況下, group 圖形屬性被映射到圖中所有離散變量中。這通常會正確地對數據進行分區,但是當它沒有正確分區時,或者當圖中沒有使用離散變量時,您需要定義分組結構,通過將group映射到每個組具有不同值的變量來明確。

默認有三種常見的情況分組是不能解決的,我們將在下面逐壹考慮。在以下示例中,我們將使用來自 nlme 包的簡單縱向數據集 Oxboys 。它記錄了26 名男孩 ( Subject )在9 個不同時期 ( Occasion )的身高 ( height ) 和中心化後的年齡( age )。 Subject 和 Occassion 以有序因子形式存儲。

在許多情況下,我們希望將數據分組,以相同的方式對每個組進行處理。換句話說,您希望能夠區分單個個體,但不能識別它們。這在許多個體的縱向研究中很常見,其中的圖通常被描述為意大利面條圖。例如,下圖顯示了每個男孩(每個 Subject )的成長軌跡:

如果您錯誤地指定了分組變量,您將獲得壹張無用的鋸齒圖形:

如果分組不是由單個變量定義的,而是由多個變量的組合定義的,則使用 interaction() 來組合它們,例如 aes(group = interaction(school_id, student_id)) .

有時我們將不同水平下的數據整合,然後使用統計匯總信息繪制圖形:壹層可能顯示單壹屬性,而另壹層可能顯示整體匯總信息。在前面的示例的基礎上,假設我們要添加壹條平滑線,顯示 所有 男孩的整體變化趨勢。如果我們在兩層中使用相同的分組,我們會得到每個男孩的平滑分組結果:

這不是我們想要的;我們無意中為每個男孩添加了壹條平滑的線條。分組控制著幾何圖形的顯示和統計數據的操作:每組運行壹個統計轉換。

我們沒有在 ggplot() 中設置分組圖形屬性,它將應用於所有圖層,而是將其設置為 geom_line() 僅適用於線條。圖中沒有離散變量,因此默認分組變量將是壹個常數,我們得到壹個平滑:

某些圖在 x軸上有離散型變量,但您仍想繪制連接 各個 組的線。這是交互圖、輪廓圖和平行坐標圖等中使用的策略。例如,假設我們在每個測量場合都繪制了高度的箱線圖:

該圖中有壹個離散變量 Occasion ,因此我們為每個唯壹的 x 值得到壹個箱線圖。現在我們要疊加連接每個男孩的線條。簡單地添加 geom_line() 是行不通的:線條是在每個場景中繪制的,而不是跨越每個對象:

為了得到我們想要的圖形,我們需要覆蓋分組,我們要為每個男孩繪制壹條線:

群組幾何對象的最後壹個重要問題是如何將個體觀察的圖形屬性映射到整體的圖形屬性。當不同的圖形屬性映射到單個幾何元素時會發生什麽?

在 ggplot2 中,這對於不同的群組幾何對象的處理方式不同。折線圖和路徑圖按照“第壹個值”原則運行:每個段由兩個觀察定義,ggplot2在繪制線段時應與第 壹個 觀察值相關的圖形屬性(例如,顏色)。也就是說,繪制第壹個線段時使用第壹個觀察值的圖形屬性,繪制第二個線段時使用第二個觀察值的圖形屬性,依此類推。最後壹次觀察的圖形屬性值不會被使用:

在第壹個圖中顏色是離散的,第壹個點和第壹條線段是紅色的,第二個點和第二條線段是綠色的,最後壹個點(沒有對應的線段)是藍色的。在第二個圖中顏色是連續的,同樣的原則適用於三種不同深淺的藍色。請註意,即使顏色變量是連續的,ggplot2 也不會從壹種圖形屬性值平滑地混合到另壹種圖形屬性值。如果您想要這樣的結果,您可以自己執行線性插值:

值得註意的是對路徑圖和折線圖的額外限制:線類型必須在每個個體的線段上保持不變。在 R 中,無法繪制具有不同線型的線。

其他群體幾何對象呢,比如多邊形?大多數群體幾何對象比折線圖和路徑圖更復雜,單個幾何對象可以映射到許多觀測值。例如,您將如何為邊界上每個點具有不同填充顏色的多邊形著色?由於這種歧義,ggplot2 采用了壹個簡單的規則:僅當各個組件都相同時才使用它們的圖形屬性。如果每個組件的圖形屬性不同,ggplot2 將使用默認值。

在圖形屬性映射到連續變量時,這些問題最為相關。對於離散變量,ggplot2 的默認行為是將變量視為組美學的壹部分,如上所述。這具有將群體幾何對象 分成更小的部分的效果。這對於條形圖和面積圖特別有效,因為堆疊各個部分會產生與原始未分組數據相同的形狀:

如果您嘗試以相同的方式將填充屬性映射到連續變量(例如 hwy ),則它不起作用。默認分組僅基於 class ,因此每個條現在都與多種顏色相關聯(取決於 hwy 每個類中觀察的值)。因為壹個條形只能顯示壹種顏色,所以 ggplot2 在這種情況下會恢復為默認的灰色。要顯示多種顏色,我們需要為每個 class 設定多個條形塊,我們可以通過覆蓋分組來獲得:

在右側的圖中,每個 class 的“陰影條”是通過將許多不同的條堆疊在彼此之上構建的,每個條都根據 hwy 的值填充了不同的陰影。請註意,執行此操作時,條形將按照分組變量(在本例中 hwy )定義的順序堆疊。如果您需要對這種行為進行精細控制,則需要根據需要創建壹個具有排序級別的因子。

  • 上一篇:程序員首選的筆記本電腦
  • 下一篇:B語言與C語言的關系
  • copyright 2024編程學習大全網