Gemakkelijkere visuele gegevens in de browser met variabeliagrammen

Vandaag duiken we in Variance Charts; een unieke op JavaScript gebaseerde 'grammatica van grafische afbeeldingen' die een abstracte, declaratieve markup-stijl biedt voor het maken van wat anders vrij complexe diagrammen zouden zijn. Variantentabellen zitten ergens tussen D3.js en HighCharts, waardoor flexibiliteit wordt geboden met behoud van een benaderbare syntaxis.

Het gebruik van Variance Charts is niet afhankelijk van een diepere kennis van JavaScript. Laten we kijken!

De bibliotheek ophalen

Variantie biedt een niet-commerciële versie, gehost via een eigen CDN, die u op uw pagina moet opnemen zoals:

U wilt een style.css bestand ook. We gaan niet door met het uitleggen van de basisinstellingen van het HTML-bestand, omdat de meeste van deze details eenvoudig zijn.

Onze eerste kaart

Variantie kan zowel JSON als CSV lezen; we zullen een eenvoudig staafdiagram maken met behulp van de volgende niet-officiële CSV-gegevens over de populariteit van spek:

 jaar, bacons 1990,20 1995,231 2000,639 2005,1625 2010,7000 2015,16000 

Zoals we kunnen zien aan de hand van deze waardeparen, wordt spek exponentieel steeds populairder. Bijvoorbeeld het paar 1990,20 laat zien dat bacon was 20 populair (wat betekent dat ook) in 1990, maar dan door 1995 populariteit was gestegen tot 231.

Maar echt, om dit visueel te kunnen zien, willen we het graag presenteren met een staafdiagram. Hier is een voorbeeld van hoe we onze grafiek zouden opmaken (we zullen de verschillende elementen in een moment bespreken).

Bacon data

jaar

We hebben ook een aantal bijbehorende CSS nodig om de grootte van de grafiek in te stellen. Om dit te doen, verpakken we al onze markeringen in a 

 en voeg de volgende stijlen toe aan a style.css het dossier:

.container breedte: 50%; marge: 60px auto;  .container-kaart width: 100%; Hoogte: 400px; 

Let op een paar dingen hier:

  • De grafiekmarkering lijkt veel op HTML. Het is in feite een geldige XML die Variance gebruikt om ons staafdiagram te bouwen. We hebben deze aangepaste tagging ook gebruikt om de CSV-gegevens in te pakken. We verwijzen naar dat CSV-element in de tabel label.
  • scale-y-lineaire vertelt ons wat de schaal van de y-richting zou moeten zijn. In ons geval gaat onze dataset naar 16000, maar begint bij slechts 20. Om het bereik te dekken, stellen we onze onderkant op 0 en onze top op 20000.
  • gids-x / gids-y maakt een vinkje op de respectieve assen.
  •  doorloopt onze gegevens en maakt items op basis van elk gegevenspunt.
  • aantekening is een label dat rond een bepaald item kan worden geplaatst, zoals een bar. Curly-accolades bieden u de mogelijkheid om een ​​stuk gegevens weer te geven; in ons geval, jaar bevindt zich in onze CSV, zodat we eenvoudig jaar kunnen produceren.
  • bar maakt een bar-element, en map-lengthdefinieert de breedte van de balk  bacons kaarten naar de CSV.

Super goed! Hoe maken we het nu minder lelijk?

De grafiek stylen

Om de grafiek te stylen, stylen we simpelweg zoals we normale elementen in CSS zouden doen. De staafelementen van de grafiek zijn normale DOM-elementen op blokniveau en worden gepositioneerd met behulp van flexbox. We zullen enkele stijlen toevoegen aan onze CSS, die er dan ongeveer zo uit zou moeten zien.

body color: # 3f130c; height: 100%; font-family: sans-serif; achtergrondafbeelding: url (... /bg.jpg); background-size: dekken; background-position: center; background-repeat: no-repeat; background-attachment: fixed;  h1, h2, h3, h4 font-family: Tauri, sans-serif;  .container width: 50%; position: relative; background-image: url (... /bg-blur.jpg); background-size: dekken; background-position: center; background-repeat: no-repeat; background-attachment: fixed; marge: 100px auto; padding: 100px;  .bacon-diagram positie: relatief; z-index: 999;  .bacon-chart h3 margin: 0 0 1em;  .container: na background-color: rgba (255,255,255,0,4); positie: absoluut; top: 0; left: 0; Breedte: 100%; height: 100%; inhoud:"";  .container-kaart width: 100%; Hoogte: 400px;  .bacon-chart bar background-colour: rgba (96,28,18,0,7); border: none; 

Notitie: we hebben een Google-lettertype toegevoegd aan het indexbestand boven onze style.css-link:

We hebben hier een kleine bonus opgenomen: het effect "wazig venster" is zichtbaar tussen de container en de lichaamselementen. We gebruiken hiervoor een tweede achtergrondafbeelding.

Nu hebben we een nuttiger diagram. Maar het wordt veel, veel beter.

Animatie en tooltips

Tijd voor wat bloeitijd, te beginnen met een aantal tooltips op de balken. Om dingen uit te schakelen, zullen we voor elke balk een nieuwe annotatie toevoegen, zodat onze grafiekopmaak er als volgt uitziet:

    jaar  Bacons   

Hierna zullen we een aantal nieuwe stijlen aan onze CSS toevoegen die enkele interessante hover-effecten en eenvoudige overgangen voor de tooltip mogelijk zullen maken:

.spek-staafdiagram achtergrondkleur: rgba (96, 28, 18, 0,7); border: none; margin: 0 belangrijk;  datum overflow: verborgen;  .tooltip width: auto; height: auto; background-color: # 444; color: # fff; ondoorzichtigheid: 0; Links: -100%; font-size: .6em; -webkit-overgang: alle .4s; -moz-overgang: alle .4s; -ms-overgang: alle .4s; -o-overgang: alle .4s; overgang: alle .4s; padding: 6px;  datum: hover background-color: rgba (255,255,255,0,1);  datum: hover .tooltip display: block; opaciteit: 1; left: 0; 

animatie

Ten slotte willen we onze bars animeren. We doen dit met een keyframe-animatie:

@ -webkit - hoofdframesbalkenIn 0% bottom: -100%;  100% onder: 0; 

Wat we dan zullen toepassen op ons bar-element:

.spek - kaartbalk achtergrond - kleur: rgba (96, 28, 18, 0.7); marge: 0! belangrijk; rand: geen; hoogte: 0; - webkit - animatie: barsIn 1s; 

Dit kan ook worden bereikt met behulp van iets als-webkit-transform: schaal (1, 0), maar we wilden het zo simpel mogelijk houden. Je moet er ook voor zorgen dat je de juiste voorvoegsels toevoegt als dat nodig is.

Meer over Variantie

Variance is een uitstekend hulpmiddel om complexere voorbeelden uit te leggen en biedt ook een geweldige index van documentatie. Je zult zien dat Variantie in staat is tot veel complexere visualisaties. We zullen hier kort enkele van de belangrijkste punten bespreken.

Variantie gebruikt namen van verschillende kerngedeelten van een diagram om het maken van de diagrammen eenvoudig te maken, inclusief punt,puntreeksbarboxplot, en lijn. Elk van deze heeft zijn eigen bepaalbare inputs. Deze kunnen allemaal in combinatie met elkaar worden gebruikt en kunnen op een iteratieve manier worden gemaakt met de herhaling blok.

Variantie kan ook gekoppelde gegevens gebruiken, wat API-gestuurde visualisaties mogelijk maakt met dynamisch bijgewerkte informatie.

Conclusie

Vandaag hebt u geleerd hoe u een volledig declaratieve, geanimeerde, opgemaakte grafiek kunt maken met behulp van variantiekaarten. In een poging om u snel van start te laten gaan, hebben we een groot deel van de functionaliteit die beschikbaar is in Variance weggelaten, dus zorg ervoor dat u het zelf uitprobeert!

Baconfoto door jeffreyww op Flickr, bewerkt. Creative Commons 2.0