我正在尝试从与我的问题类似的问题中构建(我从中借用了独立的示例和标题灵感)。我正在尝试将透明度单独应用于 ggparcoord 的每一行,或者以某种方式在另一层之上添加两层 ggparcoord。下面提供了我为解决方案工作的问题和数据格式的详细描述。
我有一个包含数千行的数据集,我们称之为x
。
library(GGally)
x = data.frame(a=runif(100,0,1),b=runif(100,0,1),c=runif(100,0,1),d=runif(100,0,1))
在对这些数据进行聚类后,我还得到了一组 5 行,我们称之为数据集y
。
y = data.frame(a=runif(5,0,1),b=runif(5,0,1),c=runif(5,0,1),d=runif(5,0,1))
为了查看y
重叠的质心x
,我使用以下代码。首先,我将 y 添加到 x 使得 5 行位于最终数据框的底部。这可以确保 ggparcoord 将它们放在最后,因此保持在所有数据之上:
df <- rbind(x,y)
接下来,我按照我提到的问题建议为 df 创建一个新列,以便我可以对质心进行不同的着色,因此可以将其与数据区分开来:
df$cluster = "data"
df$cluster[(nrow(df)-4):(nrow(df))] <- "centroids"
最后我绘制它:
p <- ggparcoord(df, columns=1:4, groupColumn=5, scale="globalminmax", alphaLines = 0.99) + xlab("Sample") + ylab("log(Count)")
p + scale_colour_manual(values = c("data" = "grey","centroids" = "#94003C"))
我遇到的问题是从这个阶段开始。在我的原始数据上,仅绘制 x 并不会带来太多的洞察力,因为它是大量的行(在此数据上,这相当于在上面使用 ggparcoordx
而不是df
:
通过alphaLines
大幅减少(0.05),由于线条的重叠,我自然可以看到一些簇(这再次在x
减少时运行 ggparcoord alphaLines
):
df
观察添加到第二个图而不是第一个图顶部的质心更有意义。
但是,由于所有内容都在单个数据帧上,因此为 alphaLine 应用如此高的值会使质心线消失。然后我唯一的选择是在 df 上使用 ggparcoord(如上所述)而不降低 alphaValue:
我的目标是将红线(质心线)放在第二个图形的顶部,并且 alpha 非常低。到目前为止,我想到了两种方法,但无法使其正常工作:
(1) 有什么方法可以在数据框上创建一列,类似于对颜色所做的操作,这样我就可以为每一行指定 alpha 值?
(2) 我最初试图创建两个不同的 ggparcoords 并“总结”希望叠加但出现错误。
这个问题可能包含太多细节,但我认为这可以更好地激发答案的适用性,以满足其他读者的兴趣。
我正在寻找的答案将使用当前格式提供的数据变量并生成我正在寻找的图。更好的数据重建方法也受到欢迎,但首选使用当前结构。