2010-06-13 9 views
5

Estoy utilizando el diseño de Protovis Arc y me gustaría colorear los enlaces entre los nodos que corresponden a la propiedad 'valor' definida en el conjunto de datos. ¿Cómo puedo acceder?Acceso al atributo de valor en las líneas Protovis

conjunto de datos se define así: Nodos: ... {nombreNodo: "Libros"} ...

Enlaces: ... {source: 1, 4: objetivo, valor : 20} ...

arc.link.add (pv.Line) .strokeStyle (función (d) d.valor> 10? "# Cc0000": "#eeeeee"); - no funciona

Respuesta

4

La propiedad d se refiere al nodo. No hay ningún atributo value definido en el nodo en este caso; los pesos del enlace se definen en los enlaces , por lo que la función de propiedad no está haciendo lo que esperaba.

Puede volver a escribir su función de propiedad para acceder al enlace (en lugar de nodo) de datos. El enlace de datos se asocia con el panel de los padres del enlace, y está disponible como segundo argumento:

.strokeStyle(function(d, p) p.value > 10 ? "#c00" : "#eee") 

Hay más de una explicación en el layout documentation. Y véase también la referencia pv.Layout.Network API: se añade

La marca link a un panel secundario, cuya propiedad está data define como la propiedad del diseño links. La propiedad del enlace data es entonces una matriz de dos elementos del nodo de origen y el nodo de destino. Por lo tanto, poperties tales como strokeStyle y fillStyle pueden ser anulados para calcular propiedades de cualquiera de los datos del nodo (la primera argumento) o los datos de enlace (el segundo argumento ; los datos del panel matriz) dinámicamente.

Cuestiones relacionadas