Neo4j 2.0.1 graphstyle.grass用于多个标签

时间:2014-02-26 22:19:21

标签: css neo4j

我很难为具有多个标签的节点设置属性。

我的graphstyle.grass文件如下所示:

node {
  diameter: 40px;
  color: #aaaaaa;
  border-color: #888888;
  border-width: 1.5px;
  text-color-internal: #000000;
  caption: '{name}';
  font-size: 12px;
}

node.foo {
  color: #aaaaff;
}

node.bar {
  color: #aaffaa;
}

node.bar.a {
  border-color: #ff0000;
}

node.bar.b {
  border-color: #0000ff;
}

所以这里的意图是,如果你有一个'bar'标签,节点会以某种方式着色,如果你还有一个额外的'a'或'b'标签,你的边框会被适当地着色。我的CSS知识很弱,但我认为这是传统上如何完成多个类选择器。

我在Neo 2.0.1浏览器图形显示中看到的行为是,如果一个节点有多个标签,它会选择第一个标签,尝试在草文件中找到node.first_label选择器,如果它没有找到它它只是为它添加一个新的选择器。所以有两个具体的例子:

  1. 如果有一个节点带有标签['bar','a'](按此顺序),那么Neo4j将在上面找到node.bar选择器并使用它,而不是对第二个类做任何事情..即'节点.bar.a'属性将不会被应用。
  2. 如果节点有标签['a','bar'](按此顺序),则Neo4j将查找“node.a”形式的选择器,而不是调用上面的任何选择器,而是创建一个带有一组默认参数的新选择器。
  3. 非常感谢任何指导或建议。

2 个答案:

答案 0 :(得分:1)

这是一种非常明智的方法,这是正确的。从Neo4j 2.0.1开始,图形样式表还不够巧妙,无法处理链式类选择器。选择顺序(正如您所观察到的)也被打破了。

<强>更新 从2.2,multiple class selectors are supported开始,只要您手动编辑草定义。

答案 1 :(得分:0)

也许使用Alchemy的SVG + CSS支持dataviz? (通过GraphJSON向其发送数据) - http://neo4j.com/developer/guide-data-visualization/#_library_alchemy_js_open_source_graph_visualization

目前 http://graphalchemist.github.io/Alchemy/#/docs 是说: &#34;通过CSS进行样式化往往是不灵活的,因为它与数据没有任何关系。但是,有些人可能想要使用SVG / CSS提供的模糊功能,我们确保这很容易做到。节点和边的svg元素接收与配置选项edgeTypes和nodeTypes中定义的类型相对应的类。要使用css创建相同的图形,您可以根据这些类分配css样式。根据我们的数据和这个例子,我们可以使用这个css生成&#34;

之后的图表

虽然它称CSS不灵活,但如果SVG确实支持你所寻求的CSS概念,我觉得它比默认方式更灵活,炼金术建议你做造型

我想知道Alchemy是否支持节点的图像(位图和SVG)btw。我还希望看到多个图像(每个用于节点的标签)以某种方式重叠(如果在Neo4j中确实存在标签顺序概念,则基于标签顺序排序)。可能如果使用类似于Popoto.js(http://www.popotojs.com/)的代码也使用D3