我正在尝试将包含单个有向图的GraphML文件读入Haskell Data.Graph,以便使用该Math.Combinatorics.Graph模块运行分析.
但是,我找不到任何允许我读取GraphML文件的模块,生成一个Data.Graph.我找到的一个相关模块是ForSyDe.Backend.GraphML.然而,这似乎是特定于ForSyDeDSL的,我目前无法想到用它来阅读普通的方法Data.Graph.
你能指点我一个允许我阅读GraphML的库,最好是一些关于如何使用它的示例代码吗?
我有这个graphML文件,它是用 yworks yEd 创建的。
现在我想将此文件读入 R 以通过visNetwork. 但是使用该igraph::read_graph函数将文件读入 R失败:
library(igraph)
example <- igraph::read_graph("data/graphml_example.graphml", format = "graphml")
Run Code Online (Sandbox Code Playgroud)
警告信息:
1:在 read.graph.graphml(file, ...) 中:在 foreign-graphml.c:651 中:由于缺少或未知的“attr.type”属性而忽略
...
这是graphml文件:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!--Created by yFiles for HTML 2.0.1.4-->
<graphml xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://www.yworks.com/xml/schema/graphml.html/2.0/ygraphml.xsd " xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:demostyle="http://www.yworks.com/yFilesHTML/demos/FlatDemoStyle/1.0" xmlns:bpmn="http://www.yworks.com/xml/yfiles-for-html/bpmn/2.0" xmlns:demotablestyle="http://www.yworks.com/yFilesHTML/demos/FlatDemoTableStyle/1.0" xmlns:compat="http://www.yworks.com/xml/yfiles-compat-arrows/1.0" xmlns:VuejsNodeStyle="http://www.yworks.com/demos/yfiles-vuejs-node-style/1.0" xmlns:y="http://www.yworks.com/xml/yfiles-common/3.0" xmlns:x="http://www.yworks.com/xml/yfiles-common/markup/3.0" xmlns:yjs="http://www.yworks.com/xml/yfiles-for-html/2.0/xaml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<key id="d0" for="node" attr.type="boolean" attr.name="Expanded" y:attr.uri="http://www.yworks.com/xml/yfiles-common/2.0/folding/Expanded">
<default>true</default>
</key>
<key id="d1" for="node" attr.name="NodeLabels" y:attr.uri="http://www.yworks.com/xml/yfiles-common/2.0/NodeLabels"/>
<key id="d2" for="node" attr.name="NodeGeometry" y:attr.uri="http://www.yworks.com/xml/yfiles-common/2.0/NodeGeometry"/>
<key id="d3" for="all" attr.name="UserTags" y:attr.uri="http://www.yworks.com/xml/yfiles-common/2.0/UserTags"/>
<key id="d4" …Run Code Online (Sandbox Code Playgroud) 使用compose()合并两个图形后尝试写入GML文件时,出现以下错误消息:
NetworkXError: 'user_id' is not a valid key
Run Code Online (Sandbox Code Playgroud)
背景是我使用以下命令导入了两个GML文件:
g = nx.read_gml(file_path + "test_graph_1.gml")
h = nx.read_gml(file_path + "test_graph_2.gml")
Run Code Online (Sandbox Code Playgroud)
每个节点(在两个GML文件中)文件的结构如下:
node [
id 9
user_id "1663413990"
file "wingsscotland.dat"
label "brian_bilston"
image "/Users/ian/development/gtf/gtf/img/1663413990.jpg"
type "friends"
statuses 21085
friends 737
followers 53425
listed 550
ffr 72.4898
lfr 0.1029
shape "triangle-up"
]
Run Code Online (Sandbox Code Playgroud)
导入每个文件之后,我可以检查所有节点属性,看看每个图中的节点都是唯一的。
我还看到默认情况下NetworkX会丢弃'id'字段,而und使用'label'作为节点的标识符。它保留了user_id属性(恰好是Twitter的user_id,非常适合我的目的)。
跑步
list(f.nodes(data=True))
Run Code Online (Sandbox Code Playgroud)
我可以看到上面节点的数据是:
('brian_bilston',
{'ffr': 72.4898,
'file': 'wingsscotland.dat',
'followers': 53425,
'friends': 737,
'image': '/Users/ian/development/gtf/gtf/img/1663413990.jpg',
'lfr': 0.1029,
'listed': 550,
'shape': 'triangle-up',
'statuses': 21085,
'type': 'friends',
'user_id': '1663413990'})
Run Code Online (Sandbox Code Playgroud)
在此测试用例中,有一个公共节点由图g和图h共享,即上面显示的一个。其他所有用户名和标签均唯一。
然后,我使用以下方法合并两个图:
f …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用预熔生成一些图形,并且似乎将数据加载到预熔中最简单的方法是使用GraphML文件。
有没有简便的方法可以从我的数据写入这些文件?
还是有更简单的方法将数据加载到预熔中?
谢谢
我希望图中节点的大小取决于所计算的顶点之间的中心度。如何才能做到这一点?
我当前的代码如下:
require(igraph)
g <- read.graph("data.graphml", "graphml")
plot(g,vertex.size = x,layout = layout.fruchterman.reingold)
Run Code Online (Sandbox Code Playgroud)
如何将“ x”设置为取决于节点之间的中心度的顶点大小?
我有大约。我的graphml文件中有4000个节点和6000条边,将其转换为networkx的有向图格式没有问题。但是,当我尝试从 networkx 运行 girvan_newman() 时,它似乎冻结了,因为我已经运行了脚本并且在过去 10 个小时内还没有完成(我尝试了 10 个节点和边,它在 5分钟)。
这是我的片段:
import community as community_louvain
import networkx as nx
from networkx.algorithms.community.centrality import girvan_newman
G = nx.read_graphml('graph.graphml')
partition_girvan_newman = girvan_newman(G)
list(partition_girvan_newman)
Run Code Online (Sandbox Code Playgroud)
我的问题是:
我有一个显示电影列表的XML文件.每部电影都有一些元数据来描述情节,演员,导演等.这是示例结构:
<movies>
<movie>
<title>The Shawshank Redemption</title>
<year>1994</year>
<rated>R</rated>
<released>1994 Oct 14</released>
<runtime>142 min</runtime>
<genres>
<genre>Crime</genre>
<genre>Drama</genre>
</genres>
<directors>
<director>Name Surname</director>
</directors>
<writers>
<writer>Stephen King (short story 'Rita Hayworth and Shawshank Redemption')</writer>
<writer>Frank Darabont (screenplay)</writer>
</writers>
<actors>
<actor>Tim Robbins</actor>
<actor>Morgan Freeman</actor>
<actor>Bob Gunton</actor>
<actor>William Sadler</actor>
</actors>
<plot>Two imprisoned men bond over a number of years, finding solace and eventual redemption through acts of common decency.</plot>
<languages>
<language>English</language>
</languages>
<countries>
<country>USA</country>
</countries>
<awards>Nominated for 7 Oscars. Another 16 wins and 16 nominations.</awards> …Run Code Online (Sandbox Code Playgroud) 我非常浅薄地使用networkx.将图形写入文件(如graphml)很容易,但如何在不打扰文件系统的情况下将其保存为字符串?
它的医生说这是可能的.
我正在使用NetworkX 1.9.1.
我有一个图表,我需要组织职位,然后我导出到graphml格式.
我在这个问题上尝试过代码.它不起作用,这是我的例子
import networkx as nx
import matplotlib.pyplot as plt
G = nx.read_graphml("colored.graphml")
pos=nx.spring_layout(G) # an example of quick positioning
nx.set_node_attributes(G, 'pos', pos)
nx.write_graphml(G, "g.graphml")
nx.draw_networkx(G, pos)
plt.savefig("g.pdf")
Run Code Online (Sandbox Code Playgroud)
以下是我得到的错误,问题是如何保存位置(graphml不接受数组).
C:\Anaconda\python.exe C:/Users/sturaroa/Documents/PycharmProjects/node_labeling_test.py
Traceback (most recent call last):
File "C:/Users/sturaroa/Documents/PycharmProjects/node_labeling_test.py", line 11, in <module>
nx.write_graphml(G, "g.graphml")
File "<string>", line 2, in write_graphml
File "C:\Anaconda\lib\site-packages\networkx\utils\decorators.py", line 220, in _open_file
result = func(*new_args, **kwargs)
File "C:\Anaconda\lib\site-packages\networkx\readwrite\graphml.py", line 82, in write_graphml
writer.add_graph_element(G)
File "C:\Anaconda\lib\site-packages\networkx\readwrite\graphml.py", line 350, in add_graph_element
self.add_nodes(G,graph_element)
File "C:\Anaconda\lib\site-packages\networkx\readwrite\graphml.py", …Run Code Online (Sandbox Code Playgroud) 我正在尝试在运行 neo4j 桌面的 Windows 上安装 neo4j-shell-tools。解压后把文件夹放到LIB目录下重启,好像没有加载工具?
Invalid input 'm': expected 'n/N' (line 1, column 2 (offset: 1))
"import-graphml"
Run Code Online (Sandbox Code Playgroud)
有什么建议?