我有一些类似于data.frame d以下的数据.
d <- structure(list(ID = c("KP1009", "GP3040", "KP1757", "GP2243",
"KP682", "KP1789", "KP1933", "KP1662", "KP1718", "GP3339", "GP4007",
"GP3398", "GP6720", "KP808", "KP1154", "KP748", "GP4263", "GP1132",
"GP5881", "GP6291", "KP1004", "KP1998", "GP4123", "GP5930", "KP1070",
"KP905", "KP579", "KP1100", "KP587", "GP913", "GP4864", "KP1513",
"GP5979", "KP730", "KP1412", "KP615", "KP1315", "KP993", "GP1521",
"KP1034", "KP651", "GP2876", "GP4715", "GP5056", "GP555", "GP408",
"GP4217", "GP641"),
Type = c("B", "A", "B", "A", "B", "B", "B",
"B", "B", "A", "A", "A", "A", "B", "B", "B", "A", "A", "A", "A",
"B", "B", …Run Code Online (Sandbox Code Playgroud) 我目前正在使用igraph,并将颜色标记为我的顶点.我想添加一个图例指示每种颜色代表什么.
我现在能想到的是使用ggplot2只打印图例并隐藏条形图.有没有办法输出传奇?
我正在尝试使用树状数据构建图形,其中节点通常分成> 2个边缘.我尝试了各种布局,我看到layout.reingold.tilford参数将生成具有非分叉数据的树状图.然而,产出并不是特别有吸引力.我宁愿使用类似layout.lgl或layout.kamada.kawai的东西,因为它们会产生更多的径向结构.我无法看到如何更改R中的参数,使这些树没有重叠的边缘.这可能吗?
我以Pajek格式导入了一个简单的数据文件,包含355个节点和354个边缘.我目前正在使用以下方式打印它:
plot.igraph(g,vertex.size=3,vertex.label=NA,layout=layout.lgl)
Run Code Online (Sandbox Code Playgroud)
这给了我这样的输出,这很好,但仍然有重叠的边缘.我已经读过你可以使用tkplot或者像cytoscape这样的其他程序手动修复它,但是我有很多这样的构建,并且它们的大小使得手动修正变得麻烦.
非常感谢.

我正在尝试绘制网络可视化以类似于流程图.我对以下代码非常接近,但我有几个问题:
非常感谢!!
library("igraph")
L3 <- LETTERS[1:8]
d <- data.frame(start = sample(L3, 16, replace = T), end = sample(L3, 16, replace = T),
weight = c(20,40,20,30,50,60,20,30,20,40,20,30,50,60,20,30))
g <- graph.data.frame(d, directed = T)
V(g)$name
E(g)$weight
ideg <- degree(g, mode = "in", loops = F)
col=rainbow(12) # For edge colors
plot.igraph(g,
vertex.label = V(g)$name, vertex.label.color = "gray20",
vertex.size = ideg*25 + 40, vertex.size2 = 30,
vertex.color = "gray90", vertex.frame.color = "gray20",
vertex.shape = "rectangle",
edge.arrow.size=0.5, edge.color=col, edge.width = E(g)$weight / …Run Code Online (Sandbox Code Playgroud) 假设我有这个示例图,我想找到连接到顶点'a'的边
d <- data.frame(p1=c('a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'd'),
p2=c('b', 'c', 'd', 'c', 'd', 'e', 'd', 'e', 'e'))
library(igraph)
g <- graph.data.frame(d, directed=FALSE)
print(g, e=TRUE, v=TRUE)
Run Code Online (Sandbox Code Playgroud)
我可以很容易地找到一个顶点:
V(g)[V(g)$name == 'a' ]
Run Code Online (Sandbox Code Playgroud)
但我需要引用连接到顶点'a'的所有边.
我有一个有几个断开组件的igraph.例如:
library(igraph)
g <- simplify(
graph.compose(
graph.ring(10),
graph.star(5, mode = "undirected")
)
) + edge("7", "8")
Run Code Online (Sandbox Code Playgroud)

在该示例中,节点9是其自己的图,节点7和8也是如此,其余的形成第三图.
我想分开处理这些,所以我想将单个igraph转换为3个igraph的列表(按连通性分割).
我破解了一些代码来实现这一目标,但它效率低下且非常糟糕.
split_graph_into_connected_subgraphs <- function(g)
{
adjacency_list <- get.adjlist(g)
connected_nodes <- lapply(
adjacency_list,
function(adjacent_nodes)
{
new_nodes <- out <- adjacent_nodes
# Keep finding nodes that are adjacent to ones we already know about,
# until we find no more
repeat
{
doubly_adjacent_nodes <- Reduce(union, adjacency_list[new_nodes])
new_nodes <- setdiff(doubly_adjacent_nodes, out)
if(length(new_nodes) == 0)
{
break
}
out <- union(out, new_nodes)
}
sort(out)
}
) …Run Code Online (Sandbox Code Playgroud) 我已经将我的计算机改为Linux Mint x64操作系统,当我尝试执行和我制作的旧程序时,我遇到了一个python库,igraph库.
弃用警告:为避免与igraph项目发生名称冲突,此可视化库已重命名为"jgraph".请在方便时升级.
我找不到有关如何更改新库代码的信息.在Win8 PC上,通过pip安装,它可以很好地工作,但我无法使用Mint在我的PC上工作.正常安装用
sudo apt-get install python-igraph
安装0.6.5-1库版本.我也尝试用pip安装它,但它给了我同样的错误,但安装的版本是igraph-0.1.11-py2.py3-none-any.whl
我只使用Graph类
from igraph import Graph
Run Code Online (Sandbox Code Playgroud)
我有什么办法来更改我的代码以使其与新库一起使用?我错过了什么吗?
编辑:它正在我的笔记本电脑上使用Mint x86 OS,库版本0.6.5-1
尝试在R中进行网络绘图.如何使用IGraph延长网络图中的边缘?
我其实想要使用fruchterman-reingold布局.有没有什么方法可以使基于力的算法"更加弹性",以便我的顶点更远?
谢谢.
使用NetworkX和新的库,进行社交网络分析查询.通过查询,我的意思是按边缘节点的属性选择/创建子图,其中边创建路径,节点包含属性.该图表使用的是表格的MultiDiGraph
G2 = nx.MultiDiGraph()
G2.add_node( "UserA", { "type" :"Cat" } )
G2.add_node( "UserB", { "type" :"Dog" } )
G2.add_node( "UserC", { "type" :"Mouse" } )
G2.add_node( "Likes", { "type" :"Feeling" } )
G2.add_node( "Hates", { "type" :"Feeling" } )
G2.add_edge( "UserA", 'Hates' , statementid="1" )
G2.add_edge( "Hates", 'UserB' , statementid="1" )
G2.add_edge( "UserC", 'Hates' , statementid="2" )
G2.add_edge( "Hates", 'UserA' , statementid="2" )
G2.add_edge( "UserB", 'Hates' , statementid="3" )
G2.add_edge( "Hates", 'UserA' , statementid="3" )
G2.add_edge( "UserC", 'Likes' , statementid="3" …Run Code Online (Sandbox Code Playgroud) igraph ×10
r ×8
plot ×2
python ×2
circos ×1
ggplot2 ×1
linux ×1
networking ×1
networkx ×1
python-2.7 ×1