Packages
Para empezar a trabajar con D3 en jupyter, se trabajará con py_d3
|
|
Initialize
Para empezar a ocupar la librería es necesario hacer un load con %load_ext py_d3
. En algunos casos hay problemas al reabrir el notebook, por eso se cambia por %reload_ext py_d3
.
|
|
References
En este Notebook, trabajaré en base al tutorial de Gabriel Coch. Ese tutorial es una traducción de otro tutorial de Scott Murray.
El aporte de este tutorial es trabajarlo en Jupyter.
Jupyter con py_d3
Usando el tag %%d3
se puede correr código HTML y JavaScript directamente en una celda. Aquí algunos ejemplos.
Text
|
|
Hello World!
Links
|
|
SVG
|
|
Javascript
|
|
HTML Console
|
|
d3.js
d3 es una librería que permite agregar y modificar elementos en la estructura del DOM de HTML.
Una diferencia de trabajar directamente en un archivo HTML, es necesario cambiar d3.select("body").append("g")
sino generar un elemento <g />
y ocupar d3.select("g")
.
Añadir Elementos
Lo primero será crear elementos dentro de la celda de salida.
En este caso, un texto.
|
|
HTML DOM Elements
Si quisiera agregar más de un párrafo, se pensaría intuitivamente que se debe repetir el código, sin embargo, dentro del DOM HTML, se trata de un solo elemento, llamado <g />
. Lo que sucede en la siguiente celda es que se agrega dos valores de texto al mismo elemento.
|
|
Identificadores de elementos
Ahora, en un archivo HTML, sería necesario seleccionar los elementos específicos. En este caso podemos ocupar un atributo id
con un nombre dado. En el siguiente caso <g id="g1">
, que puede ser seleccionado con .select("#g1")
.
|
|
Elementos con nombres
Una alternativa a lo anterior, es agregar elementos con nombres propios.
|
|
Agregar Elementos al DOM
Para poder trabajar correctamente con esto, es necesario agregar párrafos al elemento <g />
. Esto se realiza mediante .append("p")
.
|
|
Chaining methods
Si se desean agregar muchos párrafos, en vez de hacer las órdenes una a una, se pueden encadenar métodos para generar nuevos elementos.
Al ocupar esta técnica, se puede simplificar el código.
|
|
HTML Styles
Se pueden agregar estilos de HTML a los elementos que se agreguen.
|
|
Trabajar con Arrays
En este caso, generamos un array.
Luego agregamos de forma manual un párrafo por cada elemento. Los elementos se llaman con corchetes, con índices basados en cero.
|
|
Arrays en d3
Trabajar con los arrays es raro en d3.
Tiene un órden de ejecución no tán intuitivo.
En primera instancia se hace un .selectAll(“p”), incluso antes de haber agregado ningún (“p”) aún.
Luego se hace una selección del array con .data(nombreDelArray) y luego un .enter().
Ahora, por cada elemento, agregamos un párrafo con New paragraph!.
|
|
Array values
En el caso anterior, no se puede acceder a los valores del array, es necesario agregar una función que retorne el valor del arreglo: function(d) {return d;}
.
|
|
Funciones
En este caso se hace una función para hacer que cambie de color la función según el valor.
|
|
Refactor de funciones
|
|
Otra función, para colorear las letras. Just for fun.
|
|
Claro que en este post, no se puede apreciar como cambian de color cada vez que se ejecutan :(