AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
翻譯準備中
Create, read, and write GEXF (Graph Exchange XML Format) graph files (used in Gephi and others). Using the XML package, rgexf allows reading and writing GEXF files, including attributes, GEXF visual a
翻譯準備中
開發工具JavaScript · RGitHub @gvegayon上線中營運者未確認
試用過了嗎? 點一下就好,不需要登入。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Create, read and write GEXF (Graph Exchange XML Format) graph files (used in Gephi and others) in R.
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
rgexf: Build, Import and Export GEXF Graph Files
How to cite rgexf. If you use rgexf in published work, please cite it:
Vega Yon GG (2021). Building, Importing, and Exporting GEXF Graph Files with rgexf. Journal of Open Source Software, 6(64), 3456. doi:10.21105/joss.03456
Run citation("rgexf") in R for the BibTeX entry.
The first R package to work with GEXF graph files (used in Gephi and
others). rgexf allows reading and writing graph files, including:
2. GEXF viz attributes (such as color, size, and position),
3. Network dynamics (for both edges and nodes, including spells) and檢視完整 README ↗[!NOTE] How to cite rgexf. If you use rgexf in published work, please cite it:
Vega Yon GG (2021). Building, Importing, and Exporting GEXF Graph Files with rgexf. Journal of Open Source Software, 6(64), 3456. doi:10.21105/joss.03456
Run
citation("rgexf")in R for the BibTeX entry.
The first R package to work with GEXF graph files (used in Gephi and
others). rgexf allows reading and writing graph files, including:
Nodes/edges attributes,
GEXF viz attributes (such as color, size, and position),
Network dynamics (for both edges and nodes, including spells) and
Edges weighting.
Users can build/handle graphs element-by-element or through data-frames,
visualize the graph on a web browser through sigmajs javascript
gexf-js library and interact with
the igraph package.
plot.gexf() now renders graphs as an interactive htmlwidget powered
by sigma.js v3 and
graphology. Node positions, colours,
and sizes are read from the viz:* attributes in the GEXF document.
New sigmajs() function creates a sigma.js htmlwidget from a gexf
object or a path to a .gexf file. Shiny helpers sigmajsOutput()
and renderSigmajs() are also available.
The legacy gexf-js file-server renderer is preserved as
plot_gexfjs(). The gexfjs() htmlwidget (inline iframe approach) is
likewise kept for backward compatibility.
gexfjs() now accepts a gexf object in addition to a file path,
matching sigmajs().
gexfjs() has an explicit sizing policy: the widget now defaults to
the full available width and a height of 600px (50% taller than
before) in knitr documents, the browser, and Shiny alike. Both
gexfjs() and sigmajs() honor user-supplied width/height, and
their documented defaults were clarified.
The gexfjs() widget rendered an empty main canvas: the bundled
config.js (which sets zoomLevel, showEdges, and other gexf-js
defaults) was never loaded into the iframe, making every screen
coordinate NaN.
Icons and images in the gexfjs() widget (zoom, lens, edge buttons,
search icon, Gephi logo) did not display: relative url(...)
references in the CSS cannot resolve inside a srcdoc iframe, so
images are now inlined as base64 data URIs.
The gexfjs() widget’s node-attribute panel was blank and search did
not work: the generated DOM was missing the #leftcontent element,
the search form id had a typo (reacherche), and the autocomplete
list was clipped by the title bar.
More in the NEWS.md file.
To install the latest version of rgexf, you can use devtools
library(devtools)
install_github("gvegayon/rgexf")
The more stable (but old) version of rgexf can be found on CRAN too:
install.packages("rgexf")
citation(package="rgexf")
To cite rgexf in publications use the following paper:
Vega Yon G (2021). "Building, Importing, and Exporting GEXF Graph
Files with rgexf." _Journal of Open Source Software_, *6*, 3456.
doi:10.21105/joss.03456 <https://doi.org/10.21105/joss.03456>,
<https://doi.org/10.21105/joss.03456>.
And the actual R package:
Vega Yon G, Fábrega Lacoa J, Kunst J (????). _netdiffuseR: Build,
Import and Export GEXF Graph Files_. doi:10.5281/zenodo.5182708
<https://doi.org/10.5281/zenodo.5182708>, R package version 0.16.4,
<https://github.com/gvegayon/rgexf>.
To see these entries in BibTeX format, use 'print(<citation>,
bibtex=TRUE)', 'toBibtex(.)', or set
'options(citation.bibtex.max=999)'.
usescout tracks where rgexf is used: GitHub repositories, CRAN packages and papers, including papers that use it without citing it. The current list, with the exact place each one was found, is in the usage report; the data lives in the usescout branch. If you use rgexf in published work, please cite it.
We can use the read.gexf function to read GEXF files into R:
# Loading the package
library(rgexf)
g <- system.file("gexf-graphs/lesmiserables.gexf", package="rgexf")
g <- read.gexf(g)
head(g) # Taking a look at the first handful
<?xml version="1.0" encoding="UTF-8"?>
<gexf xmlns="http://www.gexf.net/1.3" xmlns:viz="http://www.gexf.net/1.3/viz" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.3" xsi:schemaLocation="http://www.gexf.net/1.3 http://www.gexf.net/1.3/gexf.xsd">
<meta lastmodifieddate="2016-11-09">
<creator>Gephi 0.9</creator>
<description/>
</meta>
<graph defaultedgetype="undirected" mode="static">
<attributes class="node" mode="static">
<attribute id="modularity_class" title="Modularity Class" type="integer"/>
</attributes>
<nodes>
<node id="11" label="Valjean">
<attvalues>
<attvalue for="modularity_class" value="1"/>
</attvalues>
<viz:size value="100.0"/>
<viz:position x="-87.93029" y="6.8120565"/>
<viz:color r="245" g="91" b="91"/>
</node>
<node id="48" label="Gavroche">
<attvalues>
<attvalue for="modularity_class" value="8"/>
</attvalues>
<viz:size value="61.600006"/>
<viz:position x="387.89572" y="-110.462326"/>
<viz:color r="91" g="245" b="91"/>
</node>
<node id="55" label="Marius">
<attvalues>
<attvalue for="modularity_class" value="6"/>
</attvalues>
<viz:size value="53.37143"/>
<viz:position x="206.44687" y="13.805411"/>
<viz:color r="194" g="91" b="245"/>
</node>
<node id="27" label="Javert">
<attvalues>
<attvalue for="modularity_class" value="7"/>
</attvalues>
<viz:size value="47.88571"/>
<viz:position x="-81.46074" y="204.20204"/>
<viz:color r="91" g="245" b="194"/>
</node>
<node id="25" label="Thenardier">
<attvalues>
<attvalue for="modularity_class" value="7"/>
</attvalues>
<viz:size value="45.142853"/>
<viz:position x="82.80825" y="203.1144"/>
<viz:color r="91" g="245" b="194"/>
</node>
<node id="23" label="Fantine">
<attvalues>
<attvalue for="modularity_class" value="2"/>
</attvalues>
<viz:size value="42.4"/>
<viz:position x="-313.42786" y="289.44803"/>
<viz:color r="91" g="194" b="245"/>
</node>
...
</nodes>
<edges>
<edge id="0" source="1" target="0"/>
<edge id="1" source="2" target="0" weight="8.0"/>
<edge id="2" source="3" target="0" weight="10.0"/>
<edge id="3" source="3" target="2" weight="6.0"/>
<edge id="4" source="4" target="0"/>
<edge id="5" source="5" target="0"/>
...
</edges>
</graph>
</gexf>
Moreover, we can use the gexf.to.igraph() function to convert the
gexf object into an igraph object:
library(igraph)
Attaching package: 'igraph'
The following objects are masked from 'package:stats':
decompose, spectrum
The following object is masked from 'package:base':
union
ig <- gexf.to.igraph(g)
op <- par(mai = rep(0, 4)) # Making room
plot(ig)
par(op)
Using the plot.gexf method–which uses the gexf-js JavaScript
library–results in a Web visualization of the graph, like this:
plot(g)
# Creating a group of individuals and their relations
people <- data.frame(matrix(c(1:4, 'juan', 'pedro', 'matthew', 'carlos'),ncol=2))
people
X1 X2
1 1 juan
2 2 pedro
3 3 matthew
4 4 carlos
# Defining the relations structure
relations <- data.frame(matrix(c(1,4,1,2,1,3,2,3,3,4,4,2), ncol=2, byrow=T))
relations
X1 X2
1 1 4
2 1 2
3 1 3
4 2 3
5 3 4
6 4 2
# Getting things done
write.gexf(people, relations)
<?xml version="1.0" encoding="UTF-8"?>
<gexf xmlns="http://www.gexf.net/1.3" xmlns:viz="http://www.gexf.net/1.3/viz" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.gexf.net/1.3 http://www.gexf.net/1.3/gexf.xsd" version="1.3">
<meta lastmodifieddate="2026-07-08">
<creator>NodosChile</creator>
<description>A GEXF file written in R with "rgexf"</description>
<keywords>GEXF, NodosChile, R, rgexf, Gephi</keywords>
</meta>
<graph mode="static" defaultedgetype="undirected">
<nodes>
<node id="1" label="juan">
<viz:color r="255" g="99" b="71" a="1"/>
<viz:position x="163.952692888871" y="100.415277363797" z="0"/>
<viz:size value="125"/>
</node>
<node id="2" label="pedro">
<viz:color r="255" g="99" b="71" a="1"/>
<viz:position x="250" y="235.61426657648" z="0"/>
<viz:size value="125"/>
</node>
<node id="3" label="matthew">
<viz:color r="255" g="99" b="71" a="1"/>
<viz:position x="189.744021945668" y="250" z="0"/>
<viz:size value="125"/>
</node>
<node id="4" label="carlos">
<viz:color r="255" g="99" b="71" a="1"/>
<viz:position x="-250" y="-250" z="0"/>
<viz:size value="125"/>
</node>
</nodes>
<edges>
<edge id="0" source="1" target="4" weight="1"/>
<edge id="1" source="1" target="2" weight="1"/>
<edge id="2" source="1" target="3" weight="1"/>
<edge id="3" source="2" target="3" weight="1"/>
<edge id="4" source="3" target="4" weight="1"/>
<edge id="5" source="4" target="2" weight="1"/>
</edges>
</graph>
</gexf>
# Defining the dynamic structure, note that there are some nodes that have NA at the end.
time<-matrix(c(10.0,13.0,2.0,2.0,12.0,rep(NA,3)), nrow=4, ncol=2)
time
[,1] [,2]
[1,] 10 12
[2,] 13 NA
[3,] 2 NA
[4,] 2 NA
# Getting things done
write.gexf(people, relations, nodeDynamic=time)
<?xml version="1.0" encoding="UTF-8"?>
<gexf xmlns="http://www.gexf.net/1.3" xmlns:viz="http://www.gexf.net/1.3/viz" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.gexf.net/1.3 http://www.gexf.net/1.3/gexf.xsd" version="1.3">
<meta lastmodifieddate="2026-07-08">
<creator>NodosChile</creator>
<description>A GEXF file written in R with "rgexf"</description>
<keywords>GEXF, NodosChile, R, rgexf, Gephi</keywords>
</meta>
<graph mode="dynamic" start="2" end="13" timeformat="double" defaultedgetype="undirected">
<nodes>
<node id="1" label="juan" start="10" end="12">
<viz:color r="255" g="99" b="71" a="1"/>
<viz:position x="250" y="250" z="0"/>
<viz:size value="125"/>
</node>
<node id="2" label="pedro" start="13" end="13">
<viz:color r="255" g="99" b="71" a="1"/>
<viz:position x="-116.286814488559" y="-48.8491528929603" z="0"/>
<viz:size value="125"/>
</node>
<node id="3" label="matthew" start="2" end="13">
<viz:color r="255" g="99" b="71" a="1"/>
<viz:position x="193.001175103911" y="-250" z="0"/>
<viz:size value="125"/>
</node>
<node id="4" label="carlos" start="2" end="13">
<viz:color r="255" g="99" b="71" a="1"/>
<viz:position x="-250" y="-174.022122416047" z="0"/>
<viz:size value="125"/>
</node>
</nodes>
<edges>
<edge id="0" source="1" target="4" weight="1"/>
<edge id="1" source="1" target="2" weight="1"/>
<edge id="2" source="1" target="3" weight="1"/>
<edge id="3" source="2" target="3" weight="1"/>
<edge id="4" source="3" target="4" weight="1"/>
<edge id="5" source="4" target="2" weight="1"/>
</edges>
</graph>
</gexf>
First, we define dynamics
time.nodes<-matrix(c(10.0,13.0,2.0,2.0,12.0,rep(NA,3)), nrow=4, ncol=2)
time.nodes
[,1] [,2]
[1,] 10 12
[2,] 13 NA
[3,] 2 NA
[4,] 2 NA
time.edges<-matrix(c(10.0,13.0,2.0,2.0,12.0,1,5,rep(NA,5)), nrow=6, ncol=2)
time.edges
[,1] [,2]
[1,] 10 5
[2,] 13 NA
[3,] 2 NA
[4,] 2 NA
[5,] 12 NA
[6,] 1 NA
Now we define the attribute values
# Defining a data frame of attributes for nodes and edges
node.att <- data.frame(letrafavorita=letters[1:4], numbers=1:4, stringsAsFactors=F)
node.att
letrafavorita numbers
1 a 1
2 b 2
3 c 3
4 d 4
edge.att <- data.frame(letrafavorita=letters[1:6], numbers=1:6, stringsAsFactors=F)
edge.att
letrafavorita numbers
1 a 1
2 b 2
3 c 3
4 d 4
5 e 5
6 f 6
# Getting the things done
write.gexf(nodes=people, edges=relations, edgeDynamic=time.edges,
edgesAtt=edge.att, nodeDynamic=time.nodes, nodesAtt=node.att)
<?xml version="1.0" encoding="UTF-8"?>
<gexf xmlns="http://www.gexf.net/1.3" xmlns:viz="http://www.gexf.net/1.3/viz" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.gexf.net/1.3 http://www.gexf.net/1.3/gexf.xsd" version="1.3">
<meta lastmodifieddate="2026-07-08">
<creator>NodosChile</creator>
<description>A GEXF file written in R with "rgexf"</description>
<keywords>GEXF, NodosChile, R, rgexf, Gephi</keywords>
</meta>
<graph mode="dynamic" start="1" end="13" timeformat="double" defaultedgetype="undirected">
<attributes class="node" mode="static">
<attribute id="att1" title="letrafavorita" type="string"/>
<attribute id="att2" title="numbers" type="integer"/>
</attributes>
<attributes class="edge" mode="static">
<attribute id="att1" title="letrafavorita" type="string"/>
<attribute id="att2" title="numbers" type="integer"/>
</attributes>
<nodes>
<node id="1" label="juan" start="10" end="12">
<attvalues>
<attvalue for="att1" value="a"/>
<attvalue for="att2" value="1"/>
</attvalues>
<viz:color r="255" g="99" b="71" a="1"/>
<viz:position x="250" y="241.156927125917" z="0"/>
<viz:size value="125"/>
</node>
<node id="2" label="pedro" start="13" end="13">
<attvalues>
<attvalue for="att1" value="b"/>
<attvalue for="att2" value="2"/>
</attvalues>
<viz:color r="255" g="99" b="71" a="1"/>
<viz:position x="102.288482685844" y="-250" z="0"/>
<viz:size value="125"/>
</node>
<node id="3" label="matthew" start="2" end="13">
<attvalues>
<attvalue for="att1" value="c"/>
<attvalue for="att2" value="3"/>
</attvalues>
<viz:color r="255" g="99" b="71" a="1"/>
<viz:position x="-250" y="250" z="0"/>
<viz:size value="125"/>
</node>
<node id="4" label="carlos" start="2" end="13">
<attvalues>
<attvalue for="att1" value="d"/>
<attvalue for="att2" value="4"/>
</attvalues>
<viz:color r="255" g="99" b="71" a="1"/>
<viz:position x="42.176120373259" y="-45.0467720735" z="0"/>
<viz:size value="125"/>
</node>
</nodes>
<edges>
<edge id="0" source="1" target="4" start="10" end="5" weight="1">
<attvalues>
<attvalue for="att1" value="a"/>
<attvalue for="att2" value="1"/>
</attvalues>
</edge>
<edge id="1" source="1" target="2" start="13" end="13" weight="1">
<attvalues>
<attvalue for="att1" value="b"/>
<attvalue for="att2" value="2"/>
</attvalues>
</edge>
<edge id="2" source="1" target="3" start="2" end="13" weight="1">
<attvalues>
<attvalue for="att1" value="c"/>
<attvalue for="att2" value="3"/>
</attvalues>
</edge>
<edge id="3" source="2" target="3" start="2" end="13" weight="1">
<attvalues>
<attvalue for="att1" value="d"/>
<attvalue for="att2" value="4"/>
</attvalues>
</edge>
<edge id="4" source="3" target="4" start="12" end="13" weight="1">
<attvalues>
<attvalue for="att1" value="e"/>
<attvalue for="att2" value="5"/>
</attvalues>
</edge>
<edge id="5" source="4" target="2" start="1" end="13" weight="1">
<attvalues>
<attvalue for="att1" value="f"/>
<attvalue for="att2" value="6"/>
</attvalues>
</edge>
</edges>
</graph>
</gexf>
We welcome contributions to rgexf. Whether reporting a bug, starting a
discussion by asking a question, or proposing/requesting a new feature,
please go by creating a new issue
here so that we can talk
about it.
Please note that the rgexf project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms