Lex*_*exi 9 visualization r ggplot2 categorical-data ggally
使用ggparcoordGGally包中的绘制平行坐标图时,我遇到了困难.由于有两个分类变量,我想在可视化中显示的内容如下图所示.我发现,在ggparcoord,groupColumn只允许一个单一的变量由组(颜色),且可靠地我可以使用showPoints标记在轴上的值,但我还需要改变这些标记物的形状根据分类变量.还有其他包可以帮助我实现我的想法吗?
任何回复将不胜感激!谢谢!

在ggplot2中滚动自己的平行坐标图并不难,这将使您可以灵活地自定义外观。下面是使用内置diamonds数据框的示意图。
要获取平行坐标,您需要添加一ID列,以便标识数据框的每一行,我们将其用作groupggplot中的美观元素。您还需要scale数字值,以便在绘制它们时它们都在同一垂直比例上。然后,您需要将x轴上想要的所有列都整形为“ long”格式。我们与tidyverse/dplyr管道操作员一起快速进行所有操作。
即使在限制类别组合的数量之后,这些线条也可能太缠结,以致于该图不容易理解,因此请仅将其视为“概念证明”。希望您可以使用数据创建一些更有用的东西。我在下面使用colour(线条)和fill(要点)美学。您可以根据需要使用shape或linetype替代。
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"))
Run Code Online (Sandbox Code Playgroud)
我以前没有使用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"))
Run Code Online (Sandbox Code Playgroud)