SlideShare a Scribd company logo
1 of 116
Idescat Visual
Gràfics i mapes
Xavier Badosa
(@badosa)
Periodisme de dades Sessió de treball (IV)
Barcelona CCCB/OKF 22 de maig de 2014
Gràfics i mapes per a la web
per ser representats en un navegador
Gràfics i mapes per a la web
per ser representats en un navegador
<!DOCTYPE html>
<html>
<head>
<title>Això és una pàgina web</title>
</head>
<body>
...
</body>
</html>
Gràfics i mapes per a la web
per ser generats en un navegador
<!DOCTYPE html>
<html>
<head>
<title>Això és una pàgina web</title>
</head>
<body>
<script>
...
</script>
</body>
</html>
JS
'Això és un text.'
JS
'Això és un text.'
"Això també."
JS
'Això és un text.'
"Això també."
"M'agrada el Javascript!"
JS
'Això és un text.'
"Això també."
"M'agrada el Javascript!"
'M'agrada el Javascript!'
JS
666
JS
666
3.14159265
JS
666
3.14159265
299792458
JS
666
3.14159265
299792458
null
JS
666
3.14159265
299792458
null true false
JS
[ 1, 2, 3 ]
JS
[ 1, 2, 3 ]
[ "u", "dos", "tres" ]
JS
[ 1, 2, 3 ]
[ "u", "dos", "tres" ]
[ "Homes", 3687 ]
JS
[ 1, 2, 3 ]
[ "u", "dos", "tres" ]
[ "Homes", 3687 ]
[
[ "Homes", 3687 ],
[ "Dones", 3800 ]
]
JS
[
[ "Homes", 3687 ],
[ "Dones", 3800 ]
]
JS
{"eti": "Homes", "val": 3687}
JS
{"eti": "Homes", "val": 3687}
{'eti': 'Homes', 'val': 3687}
JS
{"eti": "Homes", "val": 3687}
{'eti': 'Homes', 'val': 3687}
{eti: "Homes", val: 3687}
JS
{"eti": "Homes", "val": 3687}
{'eti': 'Homes', 'val': 3687}
{eti: "Homes", val: 3687}
[
{eti: "Homes", val: 3687},
{eti: "Dones", val: 3800}
]
{
type: "bar",
dec: 0,
data: [
[ "Homes" , 3687 ] ,
[ "Dones" , 3800 ]
]
}
http://idescat.cat/visual
Idescat
Visual
un encapsulador
de solucions
independència
interfície unificada
FlotjQuery
D3
stack
orderBars
pyramid
categories
cat2013mun
cat2013prov
...
excanvas
(IE>8)
maps
Idescat
Visual
un encapsulador
de solucions
càrrega diferida
segons demanda
(lazy loading)
Idescat
Visual
un encapsulador
de solucions
codi obert
https://github.com/idescat
https://github.com/idescat/visual
Idescat
Visual
un encapsulador
de solucions
v. 0.9.10
bar
rank
pyram
tsline
tsline
"20131"
"201301"
tsline
tsbar
tsbar
Mapa de
coropletescmap
Mapa de
coropletes
Mapes
de zones
d'un territori
+
valors = colors
cmap
Mapes
de zones
d'un territori
+
valors = colors
Catalunya
Municipis
cmap
Catalunya
Municipis, comarques, províncies
Mapes
de zones
d'un territori
+
valors = colors
cmap
Mapes
de zones
d'un territori
+
valors = colors
Província
Municipis
cmap
Comarca
Municipis
Mapes
de zones
d'un territori
+
valors = colors
cmap
by: "mun"
"com"
"prov"
"com02"
"prov08"
Mapa de
coropletes
Mapes
de zones
d'un territori
+
valors = colors
Mapes
de zones
d'un territori
+
valors = colors
features: [...]
id: "MUNICIPI"
label: "NOM_MUNI"
area: [500, 500]
legend: [280, 345]
projection: "mercator"
center: [1.74, 41.7]
scale: 9000
geoJSON SHP
Map
Maker
Mapa de
coropletes
Mapes
de zones
d'un territori
cmap
Mapa de
coropletes
Mapes
de zones
d'un territori
cmap
Mapa de
coropletes
Mapes
de zones
d'un territori
+
valors = colors
cmap
Mapa de
coropletes
Mapes
de zones
d'un territori
+
valors = colors
colors
Mapa de
coropletes
Mapes
de zones
d'un territori
+
valors = colors
colors
Mínim
valors
Màxim
Mapa de
coropletes
Mapes
de zones
d'un territori
+
valors = colors
colors
Mínim
valors
Màxim
Mapa de
coropletes
Mapes
de zones
d'un territori
+
valors = colors
cmap
Mapa de
coropletes
Mapes
de zones
d'un territori
+
valors = colors
colors
Mínim
valors
Màxim
x
y
Mapa de
coropletes
Mapes
de zones
d'un territori
+
valors = colors
colors valors
x
y
≤
≥
Mapa de
coropletes
Mapes
de zones
d'un territori
+
valors = colors
colors valors
x
y
≤
≥
range: [x, y]
Mapa de
coropletes
Mapes
de zones
d'un territori
+
valors = colors
colors valors
x
y
≤
≥
range: p
Mapa de
coropletes
Mapes
de zones
d'un territori
+
valors = colors
x
y
range: p
quantil p
quantil 1-p
≤
≥
Mapa de
coropletes
Mapes
de zones
d'un territori
+
valors = colors
x
y
range: 0.01
quantil 0.01
quantil 0.99
≤
≥
Mapa de
coropletes
Mapes
de zones
d'un territori
+
valors = colors
x
y
range: 0.05
quantil 0.05
quantil 0.95
valor per defecte
≤
≥
Mapa de
coropletes
Mapes
de zones
d'un territori
+
valors = colors
range: 0
Mínim
valors
Màxim
colors
Mapa de
coropletes
Mapes
de zones
d'un territori
+
valors = colors
Intervals de llargada igual?
Intervals de pes igual?
Grups s/ desviació?
Grups s/ trencaments
naturals?
cmap
Mapa de
coropletes
Mapes
de zones
d'un territori
+
valors = colors
Dades
prèviament
agrupades
cmap
cmap
visual( {
type: "bar",
data: [
[ "A" , 7329 ] ,
[ "B" , 30231 ] ,
[ "C" , 6485 ]
]
} );
visual( {
type: "bar",
data: [
[ "A" , 7329 ] ,
[ "B" , 30231 ] ,
[ "C" , 6485 ]
]
} );
visual( {
type: "bar",
data: [
[ "A" , 7329 ] ,
[ "B" , 30231 ] ,
[ "C" , 6485 ]
]
} );
visual( {
type: "bar" ,
data: [
[ "A" , 7329 ] ,
[ "B" , 30231 ] ,
[ "C" , 6485 ]
]
} );
visual( {
type: "bar" ,
data: [
[ "A" , 7329 ] ,
[ "B" , 30231 ] ,
[ "C" , 6485 ]
]
} );
visual( {
type: "bar" ,
data: [
[ "A" , 7329 ] ,
[ "B" , 30231 ] ,
[ "C" , 6485 ]
]
} );
VisualJS.load( {
type: "bar" ,
data: [
[ "A" , 7329 ] ,
[ "B" , 30231 ] ,
[ "C" , 6485 ]
]
} );
visual( {
type: "bar" ,
data: [
[ "A" , 7329 ] ,
[ "B" , 30231 ] ,
[ "C" , 6485 ]
]
} );
visual( {
type: "bar" ,
data: [
[ "A" , 7329 ] ,
[ "B" , 30231 ] ,
[ "C" , 6485 ]
]
} );
<link href="../visual.css" rel="stylesheet" />
<script src="../lib/lazyload.js"></script>
<script src="../visual.js"></script>
<script src="../visual.setup.js"></script>
</head>
<body>
<div id="visual" class="visual"></div>
<script>
</script>
visual( {
type: "bar" ,
data: [
[ "A" , 7329 ] ,
[ "B" , 30231 ] ,
[ "C" , 6485 ]
]
} );
<link href="../visual.css" rel="stylesheet" />
<script src="../lib/lazyload.js"></script>
<script src="../visual.js"></script>
<script src="../visual.setup.js"></script>
</head>
<body>
<div id="visual" class="visual"></div>
<script>
</script>
visual( {
type: "bar" ,
data: [
[ "A" , 7329 ] ,
[ "B" , 30231 ] ,
[ "C" , 6485 ]
]
} );
<link href="../visual.css" rel="stylesheet" />
<script src="../lib/lazyload.js"></script>
<script src="../visual.js"></script>
<script src="../visual.setup.js"></script>
</head>
<body>
<div id="visual" class="visual"></div>
<script>
</script>
visual( {
type: "bar" ,
data: [
[ "A" , 7329 ] ,
[ "B" , 30231 ] ,
[ "C" , 6485 ]
]
} );
<link href="../visual.css" rel="stylesheet" />
<script src="../lib/lazyload.js"></script>
<script src="../visual.js"></script>
<script src="../visual.setup.js"></script>
</head>
<body>
<div id="visual" class="visual"></div>
<script>
</script>
visual( {
type: "bar" ,
data: [
[ "A" , 7329 ] ,
[ "B" , 30231 ] ,
[ "C" , 6485 ]
]
} );
<link href="../visual.css" rel="stylesheet" />
<script src="../lib/lazyload.js"></script>
<script src="../visual.js"></script>
<script src="../visual.setup.js"></script>
</head>
<body>
<div id="visual" class="visual"></div>
<script>
</script>
visual( {
type: "bar" ,
data: [
[ "A" , 7329 ] ,
[ "B" , 30231 ] ,
[ "C" , 6485 ]
]
} );
<link href="../visual.css" rel="stylesheet" />
<script src="../lib/lazyload.js"></script>
<script src="../visual.js"></script>
<script src="../visual.setup.js"></script>
</head>
<body>
<div id="visual" class="visual"></div>
<script>
</script>
visual( {
type: "bar" ,
data: [
[ "A" , 7329 ] ,
[ "B" , 30231 ] ,
[ "C" , 6485 ]
]
} );
<link href="../visual.css" rel="stylesheet" />
<script src="../lib/lazyload.js"></script>
<script src="../visual.js"></script>
<script src="../visual.setup.js"></script>
</head>
<body>
<div id="visual" class="visual"></div>
<script>
</script>
barres.html
<iframe src="barres.html">
</iframe>
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed
diam nonummy nibh euismod tincidunt ut laoreet dolore
magna aliquam erat volutpat. Ut wisi enim ad minim veniam,
quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut
aliquip ex ea commodo consequat. Duis autem vel eum iriure
dolor in hendrerit in vulputate velit esse molestie consequat,
vel illum dolore eu feugiat nulla facilisis at vero eros et
accumsan et iusto odio dignissim qui blandit praesent
luptatum zzril delenit augue duis dolore te feugait nulla
facilisi. Nam liber tempor cum soluta nobis eleifend option
congue nihil imperdiet doming id quod mazim placerat facer
possim assum. Typi non habent claritatem insitam; est usus
legentis in iis qui facit eorum claritatem. Investigationes
demonstraverunt lectores legere me lius quod ii legunt
saepius. Claritas est etiam processus dynamicus, qui sequitur
mutationem consuetudium lectorum. Mirum est notare
quam littera gothica, quam nunc putamus parum claram,
anteposuerit litterarum formas humanitatis per seacula
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed
diam nonummy nibh euismod tincidunt ut laoreet dolore
magna aliquam erat volutpat. Ut wisi enim ad minim veniam,
quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut
aliquip ex ea commodo consequat. Duis autem vel eum iriure
dolor in hendrerit in vulputate velit esse molestie consequat,
vel illum dolore eu feugiat nulla facilisis at vero eros et
accumsan et iusto odio dignissim qui blandit praesent
luptatum zzril delenit augue duis dolore te feugait nulla
facilisi. Nam liber tempor cum soluta nobis eleifend option
congue nihil imperdiet doming id quod mazim placerat facer
possim assum. Typi non habent claritatem insitam; est usus
legentis in iis qui facit eorum claritatem. Investigationes
demonstraverunt lectores legere me lius quod ii legunt
saepius. Claritas est etiam processus dynamicus, qui sequitur
mutationem consuetudium lectorum. Mirum est notare
quam littera gothica, quam nunc putamus parum claram,
anteposuerit litterarum formas humanitatis per seacula
pàgina del gràfic
pàgina receptora
pàgina del gràfic
pàgina receptora
pàgina del gràfic
<script id="barres">
VisualJS.iframe(
{
id: "barres",
]
},
"iframe.css"
);
</script>
<script id="barres">
VisualJS.iframe(
{
id: "barres" ,
fixed: [ 340 , 320 ] ,
type: "bar" ,
data: [
[ "A" , 7329 ] ,
[ "B" , 30231 ] ,
[ "C" , 6485 ]
]
},
"iframe.css"
);
</script>
<script id="barres">
VisualJS.iframe(
{
id: "barres" ,
fixed: [ 340 , 320 ] ,
type: "bar" ,
data: [
[ "A" , 7329 ] ,
[ "B" , 30231 ] ,
[ "C" , 6485 ]
]
},
"iframe.css"
);
</script>
<script id="barres">
VisualJS.iframe(
{
id: "barres" ,
fixed: [ 340 , 320 ] ,
type: "bar" ,
data: [
[ "A" , 7329 ] ,
[ "B" , 30231 ] ,
[ "C" , 6485 ]
]
},
"iframe.css"
);
</script>
Idescat Visual
Gràfics i mapes
Periodisme de dades Sessió de treball (IV)
Xavier Badosa
(@badosa)
Barcelona CCCB/OKF 22 de maig de 2014
Crèdits
Calliphora vomitoria, de JJ Harrison (CC BY-SA)
Bicicleta, de Michael Vroegop (CC BY)
Ampolla, de Bruce Osborn (CC BY-NC-ND)

More Related Content

Viewers also liked

Gov APIs: The Notorious Case of Official Statistics
Gov APIs: The Notorious Case of Official StatisticsGov APIs: The Notorious Case of Official Statistics
Gov APIs: The Notorious Case of Official StatisticsXavier Badosa
 
JSON-stat, a simple light standard for all kinds of data disseminators
JSON-stat, a simple light standard for all kinds of data disseminatorsJSON-stat, a simple light standard for all kinds of data disseminators
JSON-stat, a simple light standard for all kinds of data disseminatorsXavier Badosa
 
Links and Widgets: the Fabric of the Web
Links and Widgets: the Fabric of the WebLinks and Widgets: the Fabric of the Web
Links and Widgets: the Fabric of the WebXavier Badosa
 
Standards for statistical data dissemination: a wish list
Standards for statistical data dissemination: a wish listStandards for statistical data dissemination: a wish list
Standards for statistical data dissemination: a wish listXavier Badosa
 
La difusión estadística y la apertura de datos: un viaje de ida y vuelta
La difusión estadística y la apertura de datos: un viaje de ida y vueltaLa difusión estadística y la apertura de datos: un viaje de ida y vuelta
La difusión estadística y la apertura de datos: un viaje de ida y vueltaXavier Badosa
 
StatisticalTable, a JSON-stat-based vocabulary
StatisticalTable, a JSON-stat-based vocabularyStatisticalTable, a JSON-stat-based vocabulary
StatisticalTable, a JSON-stat-based vocabularyXavier Badosa
 
WWW para editores (y más allá) (7)
WWW para editores (y más allá) (7)WWW para editores (y más allá) (7)
WWW para editores (y más allá) (7)Xavier Badosa
 
WWW para editores (y más allá) (y 8)
WWW para editores (y más allá) (y 8)WWW para editores (y más allá) (y 8)
WWW para editores (y más allá) (y 8)Xavier Badosa
 
WWW para editores (y más allá) (6)
WWW para editores (y más allá) (6)WWW para editores (y más allá) (6)
WWW para editores (y más allá) (6)Xavier Badosa
 
Rectificaciones: una propuesta de estándar
Rectificaciones: una propuesta de estándarRectificaciones: una propuesta de estándar
Rectificaciones: una propuesta de estándarXavier Badosa
 
WWW para editores (y más allá) (4)
WWW para editores (y más allá) (4)WWW para editores (y más allá) (4)
WWW para editores (y más allá) (4)Xavier Badosa
 
La difusión estadística y la apertura de datos gubernamentales
La difusión estadística y la apertura de datos gubernamentalesLa difusión estadística y la apertura de datos gubernamentales
La difusión estadística y la apertura de datos gubernamentalesXavier Badosa
 
Anatomía de las APIs del Idescat
Anatomía de las APIs del IdescatAnatomía de las APIs del Idescat
Anatomía de las APIs del IdescatXavier Badosa
 
El Idescat en Google Public Data Explorer
El Idescat en Google Public Data ExplorerEl Idescat en Google Public Data Explorer
El Idescat en Google Public Data ExplorerXavier Badosa
 
WWW para editores (y más allá) (2)
WWW para editores (y más allá) (2)WWW para editores (y más allá) (2)
WWW para editores (y más allá) (2)Xavier Badosa
 
Statistical dissemination 2.0
Statistical dissemination 2.0Statistical dissemination 2.0
Statistical dissemination 2.0Xavier Badosa
 
La difusión estadística en el contexto de la web 2.0. JECAS08
La difusión estadística en el contexto de la web 2.0. JECAS08La difusión estadística en el contexto de la web 2.0. JECAS08
La difusión estadística en el contexto de la web 2.0. JECAS08Xavier Badosa
 
WWW para editores (y más allá) (3)
WWW para editores (y más allá) (3)WWW para editores (y más allá) (3)
WWW para editores (y más allá) (3)Xavier Badosa
 
WWW para editores (y más allá) (5)
WWW para editores (y más allá) (5)WWW para editores (y más allá) (5)
WWW para editores (y más allá) (5)Xavier Badosa
 

Viewers also liked (20)

Gov APIs: The Notorious Case of Official Statistics
Gov APIs: The Notorious Case of Official StatisticsGov APIs: The Notorious Case of Official Statistics
Gov APIs: The Notorious Case of Official Statistics
 
JSON-stat, a simple light standard for all kinds of data disseminators
JSON-stat, a simple light standard for all kinds of data disseminatorsJSON-stat, a simple light standard for all kinds of data disseminators
JSON-stat, a simple light standard for all kinds of data disseminators
 
Links and Widgets: the Fabric of the Web
Links and Widgets: the Fabric of the WebLinks and Widgets: the Fabric of the Web
Links and Widgets: the Fabric of the Web
 
Standards for statistical data dissemination: a wish list
Standards for statistical data dissemination: a wish listStandards for statistical data dissemination: a wish list
Standards for statistical data dissemination: a wish list
 
La difusión estadística y la apertura de datos: un viaje de ida y vuelta
La difusión estadística y la apertura de datos: un viaje de ida y vueltaLa difusión estadística y la apertura de datos: un viaje de ida y vuelta
La difusión estadística y la apertura de datos: un viaje de ida y vuelta
 
StatisticalTable, a JSON-stat-based vocabulary
StatisticalTable, a JSON-stat-based vocabularyStatisticalTable, a JSON-stat-based vocabulary
StatisticalTable, a JSON-stat-based vocabulary
 
WWW para editores (y más allá) (7)
WWW para editores (y más allá) (7)WWW para editores (y más allá) (7)
WWW para editores (y más allá) (7)
 
Toplax
ToplaxToplax
Toplax
 
WWW para editores (y más allá) (y 8)
WWW para editores (y más allá) (y 8)WWW para editores (y más allá) (y 8)
WWW para editores (y más allá) (y 8)
 
WWW para editores (y más allá) (6)
WWW para editores (y más allá) (6)WWW para editores (y más allá) (6)
WWW para editores (y más allá) (6)
 
Rectificaciones: una propuesta de estándar
Rectificaciones: una propuesta de estándarRectificaciones: una propuesta de estándar
Rectificaciones: una propuesta de estándar
 
WWW para editores (y más allá) (4)
WWW para editores (y más allá) (4)WWW para editores (y más allá) (4)
WWW para editores (y más allá) (4)
 
La difusión estadística y la apertura de datos gubernamentales
La difusión estadística y la apertura de datos gubernamentalesLa difusión estadística y la apertura de datos gubernamentales
La difusión estadística y la apertura de datos gubernamentales
 
Anatomía de las APIs del Idescat
Anatomía de las APIs del IdescatAnatomía de las APIs del Idescat
Anatomía de las APIs del Idescat
 
El Idescat en Google Public Data Explorer
El Idescat en Google Public Data ExplorerEl Idescat en Google Public Data Explorer
El Idescat en Google Public Data Explorer
 
WWW para editores (y más allá) (2)
WWW para editores (y más allá) (2)WWW para editores (y más allá) (2)
WWW para editores (y más allá) (2)
 
Statistical dissemination 2.0
Statistical dissemination 2.0Statistical dissemination 2.0
Statistical dissemination 2.0
 
La difusión estadística en el contexto de la web 2.0. JECAS08
La difusión estadística en el contexto de la web 2.0. JECAS08La difusión estadística en el contexto de la web 2.0. JECAS08
La difusión estadística en el contexto de la web 2.0. JECAS08
 
WWW para editores (y más allá) (3)
WWW para editores (y más allá) (3)WWW para editores (y más allá) (3)
WWW para editores (y más allá) (3)
 
WWW para editores (y más allá) (5)
WWW para editores (y más allá) (5)WWW para editores (y más allá) (5)
WWW para editores (y más allá) (5)
 

More from Xavier Badosa

Putting Data in Cells
Putting Data in CellsPutting Data in Cells
Putting Data in CellsXavier Badosa
 
JSON-stat in the Sea of Standards
JSON-stat in the Sea of StandardsJSON-stat in the Sea of Standards
JSON-stat in the Sea of StandardsXavier Badosa
 
The Trouble with Tables
The Trouble with TablesThe Trouble with Tables
The Trouble with TablesXavier Badosa
 
What's our business? Statistics as platform
What's our business? Statistics as platformWhat's our business? Statistics as platform
What's our business? Statistics as platformXavier Badosa
 
Idescat on the Google Public Data Explorer
Idescat on the Google Public Data ExplorerIdescat on the Google Public Data Explorer
Idescat on the Google Public Data ExplorerXavier Badosa
 
Los widgets del Idescat: una aplicación de las APIs
Los widgets del Idescat: una aplicación de las APIsLos widgets del Idescat: una aplicación de las APIs
Los widgets del Idescat: una aplicación de las APIsXavier Badosa
 
E-books Are Not the Future of Books
E-books Are Not the Future of BooksE-books Are Not the Future of Books
E-books Are Not the Future of BooksXavier Badosa
 
Proyecto E-book 2001
Proyecto E-book 2001Proyecto E-book 2001
Proyecto E-book 2001Xavier Badosa
 

More from Xavier Badosa (8)

Putting Data in Cells
Putting Data in CellsPutting Data in Cells
Putting Data in Cells
 
JSON-stat in the Sea of Standards
JSON-stat in the Sea of StandardsJSON-stat in the Sea of Standards
JSON-stat in the Sea of Standards
 
The Trouble with Tables
The Trouble with TablesThe Trouble with Tables
The Trouble with Tables
 
What's our business? Statistics as platform
What's our business? Statistics as platformWhat's our business? Statistics as platform
What's our business? Statistics as platform
 
Idescat on the Google Public Data Explorer
Idescat on the Google Public Data ExplorerIdescat on the Google Public Data Explorer
Idescat on the Google Public Data Explorer
 
Los widgets del Idescat: una aplicación de las APIs
Los widgets del Idescat: una aplicación de las APIsLos widgets del Idescat: una aplicación de las APIs
Los widgets del Idescat: una aplicación de las APIs
 
E-books Are Not the Future of Books
E-books Are Not the Future of BooksE-books Are Not the Future of Books
E-books Are Not the Future of Books
 
Proyecto E-book 2001
Proyecto E-book 2001Proyecto E-book 2001
Proyecto E-book 2001
 

Idescat Visual: Gràfics i mapes