Data er omkring os, og dets visualisering er allerede blevet en vigtig del af vores liv. Diagrammer, infographics, maps og dashboards er i stor efterspørgsel i dag, fordi de præsenterer information til os på en måde, der let kan fortolkes.

Det gode er, at chartring ikke kræver store færdigheder eller særlig viden fra webudviklere, designere eller nogen andre. I denne artikel vil vi vise dig det grundlæggende og forklare, hvordan du håndterer interaktiv datavisualisering ved hjælp af JavaScript og HTML5 med lethed.

Vi skal begynde med at oprette et enkeltbjælkeoversigt, så du kan forstå det grundlæggende. Så viser vi dig en hurtig måde at lave multi-serie og stablede stregdiagrammer på. Stregdiagrammer er en populær måde at præsentere data i disse dage, og den anvendte udviklingslogik kan nemt oversættes til andre typer af grafer.

Det endelige diagram vil være dette 100% stablede stregdiagram:

Se pennen Endelig (titel). Tilpasset 100% stablet stregdiagram af Ruslan ( @ruslankorsar ) på CodePen .

I dag er der mange JavaScript charting biblioteker ; nogle af dem er helt gratis som f.eks D3 og Google Diagrammer mens andre kræver betalinger til kommerciel brug. Efter min mening er de mest omfattende og robuste af dem amCharts , AnyChart , og Highcharts .

Til denne tutorial har jeg besluttet at bruge AnyChart . Processen er imidlertid meget ens for hvert bibliotek, især hvis du gør noget simpelt. AnyChart har omfattende dokumentation og API reference samt et stort udvalg af understøttede diagramtyper og demoer på kode legeplads , så det er et godt valg for begyndere.

For nemheds skyld er alle de eksempler, der er afbildet i vejledningen, tilgængelige i denne samling på CodePen og kan udforskes lige der eller eksporteres til ZIP-filer med CSS / HTML / JavaScript demo filer.

JS Charting i 3 nemme trin

Processen med at lave en grundlæggende JavaScript-graf for dit websted eller din app består af følgende tre trin:

  1. Forbered dine data
  2. Forbind biblioteket
  3. Skriv en simpel kode.

1. Forberedelse af data

Ligesom et stort skib ønsker dybe farvande, vil en simpel graf have enkle data. Selvfølgelig, hvis du har store mængder data eller dets struktur ikke er indlysende, skal du først forberede den.

Når vi bygger størstedelen af ​​populære diagramtyper, behøver vi bare X- og Y-felter. Linjediagrammer kan dog være endnu enklere, fordi det ofte sker, at kun Y-feltet anvendes, og et indeks eller et varenummer er taget som X. Det er tilfældet, når vi bruger et JavaScript-array af data, for eksempel:

    // 5 data points = 5 categories for a single seriesvar data = [19, 24, 30, 34, 42];// Y is these values; X is item numbers [0,1,2,3,4,5]

Hvis du bruger JSON / XML til at overføre data, så kan dine data se ud som følger.

    [{'x': 'Product A','value': 19},{'x': 'Product B','value': 24}...]

Generelt er der mange måder at arbejde med data på, og visualiseringssoftwareudviklere beskriver normalt alle eller mange af dem i docs. Med det i tankerne anbefaler jeg at kontrollere relevant afsnit af dokumentationsbibliotekets dokumentation.

2. Få et diagrambibliotek

Biblioteket du bruger er naturligvis en vigtig ingrediens her. Hvis du skal bruge diagrammer lokalt, bør det være rimeligt at Hent den binære pakke og hold den i nærheden.

Men hvis du har brug for grafer til en webapp eller en side på et websted, så a CDN kan være en bedre mulighed. Det vil indlæse filerne fra den nærmeste server til din klient, hvilket giver dig hurtigere sidelast og bedre ydeevne.

3. Skrivning af en simpel HTML / JavaScript-kode

Når vores data og biblioteket er klare, kan vi begynde at skrive koden for faktisk at tegne vores kort.

a) Først skal vi oprette en kartonbeholder på siden. Den bedste måde er at bruge en

element og sæt dets ID:

    

b) Lad os derefter medtage vores data:

var data = [{x: 'DVD player', y: 19},{x: 'Home theater system', y: 24},{x: 'Karaoke player', y: 30},{x: 'Projector', y: 34},{x: 'TV receiver', y: 42}];

c) Så specificerer vi hvilken type diagram vi ønsker ved at kalde den relevante konstruktørfunktion:

    var chart = anychart.bar();

d) For at gøre tingene mere klare for seerne, vil jeg give diagrammet en titel:

    chart.title('Product Sales');

e) Lad os nu lave en serie:

    chart.addSeries(data);// or we can specify a simple dataset within the method:chart.addSeries([19, 24, 30, 34, 42]);

f) Vores diagram skal placeres i en container, så vi specificerer den, vi netop har oprettet:

    chart.container('container');

g) Alt virker fint, så vi kan tegne vores kort nu:

    chart.draw();

Sådan ser resultatet ud:

1-single-serie-søjlediagram

Følgende er hele koden for din bekvemmelighed:

Ser ret let ud, ikke? Og nu kan vi bekvemt sammenligne det samlede salg pr. Kategori.

Oprettelse af multi-serie og stablet stregdiagrammer

Nu hvor vi har lært det grundlæggende ved at chartre med JavaScript, kan vi fortsætte med at opbygge en lidt mere kompleks graf, der viser flere oplysninger. Som jeg sagde tidligere, vil jeg vise dig en nem måde at lave et multi-serie stregdiagram og derefter en stablet.

Grundlæggende er procedurerne ret ens. Som altid begynder alt med data.

Data fra en tabel

I sammenhæng med stregdiagrammet ovenfor havde vi en variabel (produktsalgsdata serien) og flere kategorier (produkttyper). For yderligere at vise sammensætningen af ​​hver værdi, som er essensen af ​​stablede stregdiagrammer, har vi brug for mere detaljerede data.

Til dette kan vi bruge data, der allerede vises på siden. Hvis du for eksempel allerede har et HTML-bord, kan du nemt bygge en graf baseret på den. Hvis du bruger AnyChart's Data Adapter modul alt hvad du behøver er at angive den tabel som datakilde.

1) Få dataadapteren:

    

2) Forbered data fra bordet:

    var tableData = anychart.data.parseHtmlTable('#tableWithData');

3) Opret et diagram og angiv datakilden:

    var chart = anychart.bar();chart.data(tableData);

Det umiddelbare resultat er et multi-seriens stregdiagram, der tillader os at for eksempel hurtigt sammenligne hvert produkts præstationer inden for hver enkelt kategori.

2-multi-serie-søjlediagram

Ændring af serienummer

Alle nødvendige detaljer, herunder data, er allerede angivet. Nu kan vi ændre serietypen og få et stablet stregdiagram ud af den konventionelle multi-serie en. Det er slet ikke svært, da du kun har brug for en linje kode for at få værdierne stablet:

    chart.yScale().stackMode('values');

Voila!

3-stacked-søjlediagram

Vi har netop oprettet et stablet stregdiagram i flyve uden at ændre konfigurationen af ​​den pågældende multi-serie. Som følge heraf er vi ikke kun klar til nu at sammenligne det samlede salg pr. Kategori som med single-seriens linjediagram fra artiklens begyndelse, men vi kan også identificere hvilket produkt der er ansvarlig for at lave en kategori, som er mindre eller større end andre .

Da vi på forhånd aftalt at vores endelige mål er et 100% stablet stregdiagram, lad os bare ændre mode for at få det:

    chart.yScale().stackMode('percent');
4-procent-stacked-søjlediagram

Det er et 100% stablet stregdiagram, som giver dig mulighed for at fremhæve hele forhold til hinanden og vurdere hvert produkts bidrag til kategorien totalt.

Designtilpasning

Design er meget vigtigt i data visualisering, for at tiltrække opmærksomhed, øge klarheden og opretholde visuel integritet i dit webprojekt. Hjælpe med dette kortlægningsbibliotek er tilpasning ganske simpelt.

Tilføjelse af tekst

For mere klarhed kan du give din visualisering med yderligere tekster. For eksempel giver jeg den lodrette akse en titel og tilføjer en kortetiket midlertidigt:

    chart.xAxis().title('Products');chart.label({text: 'Classified!'});
5-procent-stacked-bar-chart-med-tekst

Farveindstillinger

Du kan tilføje farve gennem en palette ( chart.palette () ) og ændre baggrundsindstillingerne ( chart.background () ) blandt andet. Eller du kan bruge et tema:

    

Så skal vi angive det i diagramindstillingerne:

    anychart.theme(anychart.themes.wines);
6

Diagraminteraktivitet

At lave et JavaScript-diagram i det mindste lidt interaktivt er ikke en big deal.

Sandsynligvis består den mest grundlæggende tilgang i at aktivere svingestatusen på datapunkter, for at få dem til at ændre farve og tilføje eller ændre markører. Vælge tilstanden bestemmer, hvordan hvert punkt ser ud efter at blive klikket.

Nogle enkle svever og vælg baseret interaktivitet er som standard inkluderet, så nu vil vi ikke tilføje noget til eksemplet ovenfor. Venligst vende tilbage til det for at udforske den grundlæggende interaktivitet, hvis du vil.

Det er værd at tale om værktøjstipelementet, som kan flyde, når et punkt er svævet over. Jeg forsøger altid at gøre god brug af værktøjstips ved at vise dem nogle nyttige oplysninger om, hvilken serie et punkt tilhører, hvilken værdi den repræsenterer og så videre. Du kan nemt justere dine værktøjstips for at vise noget. Vi introducerer værktøjstip og angiver hvad der skal vises i det:

    var tooltip = chart.tooltip();tooltip.displayMode('union');tooltip.textFormatter('{%SeriesName}: {%Value} ({%YPercentOfCategory}%)');

Her er resultatet:

7

Dette er bare et kort overblik over tilpasningsmulighederne, for at gå i detaljer ville være en hel artikel alene. For nu foreslår jeg, at du læser interaktivitet sektion af dokumentationen for mere information.

Konklusion

Som du ser, er det ikke svært at opbygge interaktive diagrammer med JavaScript. Desuden kan du finde alle eksemplerne fra selvstudiet i min indsamling på CodePen og brug dem nemt i dit arbejde. Du skal bare kopiere koden, ændre mine data til din, og få dit projekt op og køre meget hurtigt.

Husk altid at tjekke dokumentationen og / eller API-referencen, samt vær opmærksom på demoen i det bibliotek, du bruger, f.eks. dette AnyCharts galleri . Det er normalt ikke kompliceret at se, om der er noget tæt på hvad du har brug for, find et eksempel der passer bedst, lav nogle enkle ændringer, og brug det så som du har brug for.