Autor Tema: Como usar mouseover d3 javascript y json  (Leído 5085 veces)

ingrid2ir

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 2
    • Ver Perfil
Como usar mouseover d3 javascript y json
« en: 02 de Diciembre 2013, 17:10 »
Hola foro!!
Estoy tratando de hacer un ejercicio en javascript usando d3.js y mouseover, pero no me sale :( Intento reproducir este ejemplo http://bost.ocks.org/mike/uberdata/
pero no se como animarlo con el mouseover, por ejemplo que cuando pase el mouse en un nodo solo muestre ese nodo seleccionado y sus conecciones.

// ************************************************** ****
Mi codigo html es:
Código: [Seleccionar]
<!DOCTYPE html>
<meta charset="utf-8">
<style>

#circle circle {
fill: none;
pointer-events: all;
}
body {
font: 10px sans-serif;
}

.group path {
fill-opacity: .5;
}

path.chord {
fill-opacity: .67;
stroke: #000;
stroke-width: 1.25px;
}

#circle:hover path.fade {
display: none;
}

</style>

<h1>Sistemas</h1>
<aside>.Muestra diferentes sistemas relacionados.
<p>Prueba.

<body>
<script src="d3.v3.min.js"></script>
<script>

var outerRadius = 1000 / 2,//tamaño total
innerRadius = outerRadius - 130;//tamaño del circulo dibujado

var fill = d3.scale.category20c();

var chord = d3.layout.chord()
.padding(.04)
.sortSubgroups(d3.descending)
.sortChords(d3.descending);

var arc = d3.svg.arc()
.innerRadius(innerRadius)//radio exterior del dibujo
.outerRadius(innerRadius + 20);//radio interior del dibujo

var path = d3.svg.chord()
.radius(innerRadius);

var svg = d3.select("body").append("svg")
.attr("width", outerRadius * 2)
.attr("height", outerRadius * 2)
.append("g")
.attr("id","circulo")//nombre del objeto
.attr("transform", "translate(" + outerRadius + "," + outerRadius + ")");

svg.append("circulo")
.attr("r",outerRadius);//no se que hace

d3.json("test.json", function(error, imports) {

var indexByName = d3.map(),
nameByIndex = d3.map(),
matrix = [],
n = 0;

// Returns the Flare package name for the given class name.
function name(name) {
return name.substring(0, name.lastIndexOf(".")).substring(6);
}

// Compute a unique index for each package name.
imports.forEach(function(d) {
if (!indexByName.has(d = name(d.name))) {
nameByIndex.set(n, d);
indexByName.set(d, n++);
}
}
);

// Construct a square matrix counting package imports.
imports.forEach(function(d) {[/i][/i][/i]
var source = indexByName.get(name(d.name)),
row = matrix[source];
if (!row) {
row = matrix[source] = [];
for (var i = -1; ++i < n;) row[i] = 0;
}
d.imports.forEach(function(d) { row[indexByName.get(name(d))]++; });
});

chord.matrix(matrix);

var g = svg.selectAll(".group")
.data(chord.groups)
.enter().append("g")
.attr("class", "group")
.on("mouseover",mouseover);

// Add a mouseover title.
g.append("title").text(function(d, i) {
//filter
return nameByIndex.get(d.index);//al pasar el mouse encima regresa el nombre el campo seleccionado
});

// Add the group arc. crea el circulo exterior
var groupPath = g.append("path")
.attr("id", function(d, i) { return "g" + i; })
.style("fill", function(d) { return fill(d.index); })
.style("stroke", function(d) { return fill(d.index); })
.attr("d", arc);

// Add a text label. dibuja los nombres y uniones
var groupText = g.append("text")
.each(function(d) { d.angle = (d.startAngle + d.endAngle) / 2; })
.attr("dy", ".35em")
.attr("transform", function(d) {
return "rotate(" + (d.angle * 180 / Math.PI - 90) + ")"
+ "translate(" + (innerRadius + 26) + ")"
+ (d.angle > Math.PI ? "rotate(180)" : "");})
.style("text-anchor", function(d) { return d.angle > Math.PI ? "end" : null; })
.text(function(d) { return nameByIndex.get(d.index); });

// Remove the labels that don't fit.
//aqui va la condicion para ocultar lo que quiero, pero no se como

var chord2=svg.selectAll(".chord")
.data(chord.chords)
.enter()
.append("path")
.attr("class", "chord")
.style("stroke", function(d) { return d3.rgb(fill(d.source.index)).darker(); })
.style("fill", function(d) { return fill(d.source.index); })
.attr("d", path);

// Add an elaborate mouseover title for each chord.
chord2.append("title").text(function(d) {
return "evento mouse";
});

function mouseover(d,i)
{
chord2.classed("fade",function(p){
//svg.select(".chord").index();
return p.source.index != i
&& p.target.index != i;
}
);
}

});

d3.select(self.frameElement).style("height", outerRadius * 2 + "px");

</script>
<footer>
<aside>29 Noviembre, 2013</aside>
<i>Ingrid Ibarra</i>
</footer>
// ************************************************** ****
El código .JSON

Código: [Seleccionar]
[
{"name":"flare.Ricardo.1.o","size":3,"imports":["flare.Ingrid.2.i","flare.ss.3.i"]},
{"name":"flare.Ricardo.1.i","size":33,"imports" :[]},
{"name":"flare.Ingrid.2.o","size":34,"imports":["flare.ss.3.i","flare.aa.3.i"]},
{"name":"flare.Ingrid.2.i","size":34,"imports":[]},
{"name":"flare.ss.3.o","size":10,"imports":["flare.Ingrid.2.i"]},
{"name":"flare.sse.3.i","size":10,"imports":[]},
{"name":"flare.ssr.3.i","size":140,"imports":["flare.sst.3.i"]},
{"name":"flare.sst.3.i","size":10,"imports":[]},
{"name":"flare.ssg\".3.i","size":1,"imports":["flare.Ingrid.2.i"]},

{"name":"flare.aa.3.o","size":160,"imports":["flare.Ingrid.2.i"]},
{"name":"flare.aa.3.i","size":1640,"imports":[]}
]

// ************************************************** ****


Espero me puedan orientar por favor :D

Saludos
« Última modificación: 15 de Septiembre 2014, 14:21 por Alex Rodríguez »

foxternoster

  • Sin experiencia
  • *
  • Mensajes: 42
    • Ver Perfil
Re:Como usar mouseover d3 javascript
« Respuesta #1 en: 02 de Diciembre 2013, 22:19 »
No sé si tendrá que ver, pero en vez de linkar en local puedes poner:

<script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script>

ingrid2ir

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 2
    • Ver Perfil
Re:Como usar mouseover d3 javascript
« Respuesta #2 en: 02 de Diciembre 2013, 23:14 »
Hola, gracias por la respuesta, pero no es eso, porque así si hace la gráfica, lo que me falta solamente es animarla   :(

foxternoster

  • Sin experiencia
  • *
  • Mensajes: 42
    • Ver Perfil
Re:Como usar mouseover d3 javascript
« Respuesta #3 en: 03 de Diciembre 2013, 08:43 »
yo no logro ver la grafica, creo que me faltan los archivos donde esta la gráfica

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".