我使用R中的Kohonen软件包将SOM应用于我所拥有的基因组数据集。 SOM有55个变量。我想将这些变量的代码子集绘制为扇形图。例如,只使用R中的葡萄酒数据集:
library(kohonen)
data(wines)
set.seed(7)
training <- sample(nrow(wines), 120)
Xtraining <- scale(wines[training, ])
Xtest <- scale(wines[-training, ],
center = attr(Xtraining, "scaled:center"),
scale = attr(Xtraining, "scaled:scale"))
som.wines <- som(Xtraining, grid = somgrid(5, 5, "hexagonal"))
plot(som.wines, type="codes")
这将每个节点上每个预测变量的权重绘制为一个粉丝图。在这个例子中我想做的是情节说,只是在粉丝图中的镁,灰,苹果酸和黄酮类化合物。
plot(som.wines, type = "property", property = som.wines$codes[,'magnesium'])
将绘制每个节点上镁的重量。
做类似
的事情plot(som.wines, type = "property", property =som.wines$codes[,c('magnesium','ash')])
用每个节点的灰分重量覆盖镁重量。
此外还有:
plot(som.wines, type = "codes", property = som.wines$codes[,c('magnesium','ash')],)
也不起作用。
非常感谢任何帮助。
答案 0 :(得分:0)
嗯,我们知道
class(som.wines)
# [1] "kohonen"
因此,此处触发的绘图方法为kohonen:::plot.kohonen
。当您设置type =“codes”时,会将命令固定为kohonen:::plot.kohcodes
。经过检查,它似乎只使用您传递它的对象的$codes
和$grid
属性。如果要直接对这些值进行子集化,这似乎是安全的。例如
keep <- c("magnesium", "ash", "malic acid", "flavonoids")
xx <- som.wines
xx$codes<-xx$codes[,keep]
plot(xx, type="codes")
这会产生