我计划创建一个交互式应用程序,用户将数据上传到网站,我的应用程序将从此数据返回Cytoscape(RCyjs)图表。我将向用户指定图表中的节点将根据正在读取的数据列进行标记....
例如,我希望我的应用程序通过RCyjs实现,因此当用户上传包含数据的文本文件时,我可以创建一个邻接矩阵,并使用类似下面的代码:
> data<-read.table("text_file_containing_data.txt", sep="\t")
> p1<-cor(data[1:20,1:20], use="p") #correlations taken from sample of
> library(graph)
> library(RCyjs)
> library(igraph)
> rcy<-RCyjs(portRange=9047:9057, quiet=TRUE, graph=igraph.to.graphNEL(simplify(graph_from_adjacency_matrix(p1, weighted=T))))
所以我想知道的是如何让输出看起来像这样:
RCyjs 命令中是否有命令允许通过数据集中的参数指定节点名称,例如列名?在RCyjs手册中,似乎可以在RCyjs命令中指定诸如 node.attribute.name 和 nodes 之类的参数,例如。
for (i in colnames(p1)){
nodeDataDefaults(g, "label") <- colnames(p1)[i]
}
setNodeLabelRule(rcy, "label")
redraw(rcy)
然而这对图表没有影响
当我检查上述命令的输出时,我得到:
noa(g, "label")
6450255 2570615 6370619 2600039 2650615 5340672 2000519 3870044 7050209 1580181 5220554 5390438
NA NA NA NA NA NA NA NA NA NA NA NA
6420681 4760377 2370438 4050154 1740066 4830092 3610072 6480136
NA NA NA NA NA NA NA NA
所以也许我在上面的命令中遗漏了一些我最初应该在图形包中标记它们的东西,但我似乎无法让它工作.....
我也尝试了以下内容:
nodes<-getNodes(rcy)
setNodeLabelRule(rcy, for(i in nodes[,1]){
i
}
)
但是图表并没有像我希望的那样标记......
想知道这是为什么......
答案 0 :(得分:1)
在RCyjs包附带的小插图中,您可以找到这些线(查看示例3,缺氧诱导):
首次设置默认值后,显式将节点数据属性分配给graphNEL:
nodeDataDefaults(g, attr="label") <- "default node label"
nodeData (g, all.nodes, "label") = all.nodes
你跳过第二步,我能说清楚。 完整序列可能如下所示:
all.nodes <- colnames(p1)
g <- new("graphNEL", edgemode = "directed")
g <- addNode(all.nodes, g)
nodeDataDefaults(g, attr="label") <- "" # initialize
# vector assignment of labels
nodeData(g, all.nodes, attr="label") <- all.nodes