簡體   English   中英

如何在R中繪制帶有多個分類變量的平行坐標

[英]How to plot parallel coordinates with multiple categorical variables in R

使用GGally軟件包中的ggparcoord繪制平行坐標圖時,我遇到了困難。 由於有兩個類別變量,因此我想在可視化中顯示的內容類似於下圖。 我發現在ggparcoordgroupColumn只允許單個變量進行分組(顏色),並且可以確定地使用showPoints標記軸上的值,但是我還需要根據這些標記來改變形狀分類變量。 還有其他軟件包可以幫助我實現我的想法嗎?

任何回應將不勝感激! 謝謝!

大學和國家是兩類

在ggplot2中滾動自己的平行坐標圖並不難,這將使您可以靈活地自定義外觀。 下面是使用內置diamonds數據框的示意圖。

要獲取平行坐標,您需要添加一個ID列,以便標識數據框的每一行,我們將其用作ggplot中的group外觀。 您還需要scale數字值,以便在繪制它們時它們都在相同的垂直比例上。 然后,您需要在x軸上獲取所有想要的列,並將它們整形為“長”格式。 我們可以使用tidyverse/dplyr管道運算符tidyverse/dplyr進行所有操作。

即使在限制類別組合的數量之后,這些線條也可能太纏結,以至於該圖難以解釋,因此,請僅將其視為“概念證明”。 希望您可以使用數據創建一些更有用的東西。 我在下面使用了colour (用於線條)和fill (用於點)美學。 您可以根據需要使用shapelinetype

library(tidyverse)
theme_set(theme_classic())

# Get 20 random rows from the diamonds data frame after limiting
#  to two levels each of cut and color
set.seed(2)
ds = diamonds %>% 
  filter(color %in% c("D","J"), cut %in% c("Good", "Premium")) %>%
  sample_n(20)

ggplot(ds %>% 
         mutate(ID = 1:n()) %>%             # Add ID for each row
         mutate_if(is.numeric, scale) %>%   # Scale numeric columns
         gather(key, value, c(1,5:10)),     # Reshape to "long" format
       aes(key, value, group=ID, colour=color, fill=cut)) +
  geom_line() +
  geom_point(size=2, shape=21, colour="grey50") +
  scale_fill_manual(values=c("black","white"))

在此處輸入圖片說明

我以前沒有使用過ggparcoords ,但是似乎很簡單的唯一選項(至少在我第一次嘗試使用該函數時)是將兩列數據粘貼在一起。 下面是一個例子。 即使只有四個類別組合,該圖也會造成混淆,但是如果您的數據中有很強的模式,它也許可以解釋:

library(GGally)

ds$group = with(ds, paste(cut, color, sep="-"))

ggparcoord(ds, columns=c(1, 5:10), groupColumn=11) +
  theme(panel.grid.major.x=element_line(colour="grey70"))

在此處輸入圖片說明

暫無
暫無

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

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