write_graph()
是一个用于将图导出为外部文件格式的通用函数。用于数据交换的推荐格式是 GraphML 和 GML。
用法
write_graph(
graph,
file,
format = c("edgelist", "pajek", "ncol", "lgl", "graphml", "dimacs", "gml", "dot",
"leda"),
...
)
NCOL 格式
此格式是一个纯文本边列表,其中顶点按名称而不是数字 ID 引用。 边权重可以有选择地写入。 附加参数
- names
一个顶点属性的名称,用于获取顶点名称,或者
NULL
以使用从零开始的数字 ID。- weights
一个边属性的名称,用于获取边权重,或者
NULL
以省略边权重。
LGL 格式
.lgl 格式被 Large Graph Layout 可视化软件使用 (https://lgl.sourceforge.net),它可以描述无向的可选加权图。
- names
用于顶点名称的顶点属性的名称,如果为 NULL,则使用数字 ID。
- weights
用于边权重的边属性的名称,如果为 NULL,则省略权重。
- isolates
逻辑值,是否在文件中包含孤立顶点。 默认值为 FALSE。
DIMACS 格式
这是一种面向行的文本文件 (ASCII) 格式。 每行的第一个字符定义行的类型。 如果第一个字符是 c,则该行是注释行,将被忽略。 有一个问题行(文件中的 p),它必须出现在任何节点和弧描述符行之前。 问题行有三个字段,用空格分隔:问题类型(max 或 edge)、顶点数和图中的边数。 在 MAX 问题中,需要正好两个节点识别行 (n),一个用于源顶点,一个用于目标顶点。 这些有两个字段:顶点的 ID 和顶点的类型,可以是 s(=源)或 t(=目标)。 弧线以 a 开头,有三个字段:源顶点、目标顶点和边容量。 在 EDGE 问题中,每个节点可以有一条节点线 (n)。 它指定节点索引和一个整数节点标签。 没有指定显式标签的节点将使用其索引作为标签。 在 EDGE 问题中,每条边都指定为一条边线 (e)。
- source
源顶点的数字 ID。
- target
目标顶点的数字 ID。
- capacity
用于边容量的边属性的名称,如果为 NULL,则使用“capacity”属性(如果存在)。
GraphML 格式
GraphML 是一种基于 XML 的文件格式,用于表示各种类型的图。 当数字属性值为 NaN 时,它将从文件中省略。 此函数假定属性名称和字符串属性值中的非 ASCII 字符采用 UTF-8 编码。 如果不是这种情况,则生成的 XML 文件将无效。 不允许使用控制字符,即字符代码最高为 31(制表符、回车符和换行符除外)。
- prefixAttr
逻辑值,是否为属性名称添加前缀,以确保顶点/边/图属性的唯一性。 默认值为 TRUE。
LEDA 格式
此函数将图以 LEDA 格式写入输出流。 请参阅 http://www.algorithmic-solutions.info/leda_guide/graphs/leda_native_graph_fileformat.html 目前对 LEDA 格式的支持非常基础; igraph 仅写入 LEDA 图部分,该部分支持一个选定的顶点和边属性,没有布局信息或视觉属性。
- vertex.attr
要包含在文件中的顶点属性的名称。
- edge.attr
要包含在文件中的边属性的名称。
DOT 格式
DOT 是广为人知的 GraphViz 软件使用的格式,有关详细信息,请参见 https://graphviz.cn。 DOT 格式的语法可以在这里找到:https://graphviz.cn/doc/info/lang.html 这只是一个初步实现,没有写入可视化信息。 此格式仅用于与 Graphviz 互操作。 不建议用于数据交换或存档。
参考文献
Adai AT, Date SV, Wieland S, Marcotte EM. LGL:使用可视化超大型生物网络算法创建蛋白质功能图谱。 J Mol Biol. 2004 Jun 25;340(1):179-90。
参见
外部格式读取器 graph_from_graphdb()
, read_graph()
作者
Gabor Csardi csardi.gabor@gmail.com
C 库中的相关文档
write_graph_dimacs_flow()
, write_graph_dot()
, write_graph_edgelist()
, write_graph_gml()
, write_graph_graphml()
, write_graph_leda()
, write_graph_lgl()
, write_graph_ncol()
, write_graph_pajek()
。
示例
g <- make_ring(10)
file <- tempfile(fileext = ".txt")
write_graph(g, file, "edgelist")
if (!interactive()) {
unlink(file)
}