Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Colors 根据属性为Neo4j中的节点着色_Colors_Neo4j_Graph Databases - Fatal编程技术网

Colors 根据属性为Neo4j中的节点着色

Colors 根据属性为Neo4j中的节点着色,colors,neo4j,graph-databases,Colors,Neo4j,Graph Databases,在为使用Neo4j而启动的localhost页面上,可以很容易地以不同的方式为特定节点着色。遵循Neo4j中包含的电影示例;红色的人物,紫色的电影,点击按钮将其中一个变成橙色 作为对此的扩展,我希望为相同类型的节点着色,但以不同的方式使用不同的属性。以身作则,;将性别作为属性添加到每个person节点中,然后将男性染成蓝色,女性染成红色 有可能在当前版本中实现这一点吗?我与Neo4j社区2.1.7合作 编辑:有人请求一个负责可视化的.grass文件。下面是一个小摘录,它负责为一种节点着色 nod

在为使用Neo4j而启动的localhost页面上,可以很容易地以不同的方式为特定节点着色。遵循Neo4j中包含的电影示例;红色的人物,紫色的电影,点击按钮将其中一个变成橙色

作为对此的扩展,我希望为相同类型的节点着色,但以不同的方式使用不同的属性。以身作则,;将性别作为属性添加到每个person节点中,然后将男性染成蓝色,女性染成红色

有可能在当前版本中实现这一点吗?我与Neo4j社区2.1.7合作

编辑:有人请求一个负责可视化的.grass文件。下面是一个小摘录,它负责为一种节点着色

node.Page {
  color: #30B6AF;
  border-color: #46A39E;
  text-color-internal: #FFFFFF;
  diameter: 80px;
  border-width: 2px;
  caption: '{pagename}';
  font-size: 10px;}

我很确定这是不可能的。如果单击弹出窗口的“样式”选项卡并单击“查看样式表”,您将在GRASS文件中看到颜色与节点标签绑定。如果需要不同类型的可视化,可以提交拉取请求:

需要注意的是,GRASS格式是为Neo4j创建的,据我所知,它没有在其他任何地方使用,所以不要在任何地方寻找标准文档

或者,根据您正在做的事情,您可以创建自己的可视化。对于web,有许多库,如Sigma.js或D3。我也一直想玩这个(基于Sigma.js),但还没有机会:


我找到了一个解决方法-虚拟子图。根据:

“您可以创建图形中不存在的数据的可视化表示形式”

基本上,您可以使用apoc.create.vNode创建节点的虚拟副本,并根据属性值为这些虚拟节点分配不同的类型。在您的情况下,将有两种新类型的节点男性女性。然后,您可以自由为“男士”节点和“女士”节点指定不同的颜色/样式

您的代码应该类似于:

UNWIND ['men', 'women'] as gender 
MATCH (n:Person {Gender:gender}) 
CALL apoc.create.vNode([gender],{id:n.id}) yield node as vPerson 
RETURN vPerson
如果要显示(同性之间的)关系,请注释掉上面的最后一行并添加以下查询:

WITH apoc.map.groupBy(collect(vPerson),'id') as vPersons, gender 
WITH vPersons, [(p1:Person {Gender:gender})-[r]->(p2:Person {Gender:gender}) | apoc.create.vRelationship(vPersons[p1.id], type(r), {}, vPersons[p2.id])] as rels 
RETURN vPersons, rels

虽然我来晚了一点,但我想帮助其他可能找到办法的人。无法基于属性更改节点的颜色,但可以通过基于属性创建节点来实现。请记住,应用这些查询后,您的数据将不相同。因此,保存数据备份始终是一个好主意

这是默认情况下标签的着色方式(之前):

基于属性的颜色

假设有一个名为
Case
的标签,其属性为
national
,并且您希望根据国籍为节点着色。所以下面的查询可以用来创建国籍属性以外的标签。为此,您需要安装apoc库。检查安装情况

// BY NATIONALITY
MATCH (n:Case)
WITH DISTINCT n.nationality AS nationality, collect(DISTINCT n) AS persons
CALL apoc.create.addLabels(persons, [apoc.text.upperCamelCase(nationality)]) YIELD node
RETURN *
这将使所有人按国籍返回。现在,您可以按国籍国家选择颜色。下面是一个例子

基于属性的颜色并与其他标签一起加载

假设您还有一个名为
Cluster
的标签。案例通过关系附加到集群。只需将查询更改为following,即可获得集群及其与案例的关系

//BY NATIONALITY WITH CLUSTERS
MATCH (n:Case),(c:Cluster)
WITH DISTINCT n.nationality AS nationality, 
    collect(DISTINCT n) AS persons,
    collect(DISTINCT c) AS clusters
CALL apoc.create.addLabels(persons, [apoc.text.upperCamelCase(nationality)]) YIELD node
RETURN *
它将返回包含所有关系的案例和集群。下面是一个例子


如果这有帮助,请投赞成票,并希望让其他人知道这是一个可接受的答案。谢谢。

是否可以从电影示例中提取单击和颜色源代码,并将其显示为问题的一部分?对于视觉表示,它使用.grass文件,我似乎找不到很多信息。此外,无法在浏览器中对其进行编辑。我在第一篇文章中放了一段.grass文件(以保持可读性)。我将在一个.txt文件中编辑它,另存为.grass并上传它。谢谢你的回复!如果有时间的话,我可能会看看上面提到的库,但首要任务是开发一个GUI并将查询结果可视化。