控制ggparcoord中的alpha(来自GGally包)
我试图从类似于我的问题(我从中借鉴自足的例子和标题灵感)来构建。 我试图将透明度单独应用于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))
为了看到重叠x
的质心y
我使用下面的代码。 首先,我将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不会导致很大的洞察力,因为它是一个很重的线条(在这个数据上,这相当于在x
上使用ggparcoord而不是df
:
通过alphaLines
减少alphaLines
(0.05),由于线条重叠,我可以自然地看到一些簇(这又在x
减少alphaLines
上运行alphaLines
):
观察在第二个图上添加到df
的质心更有意义,而不是第一个。
但是,由于所有内容都位于单个数据框中,因此为alphaLine应用如此高的值会使质心线消失。 然后我唯一的选择就是在df上使用ggparcoord(如上所提供的)而不减少alphaValue:
我的目标是让红线(质心线)位于第二个数字的顶部,且alpha值非常低。 到目前为止,我认为有两种方式,但无法使其工作:
(1)有没有什么办法在数据框上创建一个列,类似于为颜色完成的操作,这样我就可以为每一行指定alpha值了?
(2)我最初试图创建两个不同的ggparcoords并“总结它们”,希望覆盖但错误被提出。
这个问题可能含有太多细节,但我认为这可能会更好地激发答案的适用性,以服务于其他读者的兴趣。
我正在寻找的答案将使用当前格式提供的数据变量并生成我正在寻找的图。 更好的方法来重建数据也是受欢迎的,但使用目前的结构是首选。
在这种情况下,我认为使用ggplot
更容易,并自己构建图形。 我们对数据如何表示(我们把它放在长格式中)做一些微调,然后我们做平行坐标图。 我们现在可以将任何属性映射到您喜欢的cluster
。
library(dplyr)
library(tidyr)
# I start the same as you
x <- data.frame(a=runif(100,0,1),b=runif(100,0,1),c=runif(100,0,1),d=runif(100,0,1))
y <- data.frame(a=runif(5,0,1),b=runif(5,0,1),c=runif(5,0,1),d=runif(5,0,1))
# I find this an easier way to combine the two data.frames, and have an id column
df <- bind_rows(data = x, centroids = y, .id = 'cluster')
# We need to add id's, so we know which points to connect with a line
df$id <- 1:nrow(df)
# Put the data into long format
df2 <- gather(df, 'column', 'value', a:d)
# And plot:
ggplot(df2, aes(column, value, alpha = cluster, color = cluster, group = id)) +
geom_line() +
scale_colour_manual(values = c("data" = "grey", "centroids" = "#94003C")) +
scale_alpha_manual(values = c("data" = 0.2, "centroids" = 1)) +
theme_minimal()
链接地址: http://www.djcxy.com/p/30935.html