Heim > Web-Frontend > js-Tutorial > Erstellen Sie Datenvisualisierungen in JavaScript mit Dimple und D3

Erstellen Sie Datenvisualisierungen in JavaScript mit Dimple und D3

Christopher Nolan
Freigeben: 2025-02-20 09:59:09
Original
446 Leute haben es durchsucht

Erstellen Sie Datenvisualisierungen in JavaScript mit Dimple und D3

Das World Wide Web legt eine Fülle von Daten zu unseren Fingerspitzen. Aufgrund des bloßen Volumens dieser Daten kann es sich oft als schwierig erweisen, sie auf eine Weise zu präsentieren oder auf eine Weise zu erbringen, die Ihre Botschaft vermittelt. Hier kommen Datenvisualisierungen ins Spiel.

In diesem Artikel werde ich Sie durch die Erstellung einer Datenvisualisierung führen, nämlich das US -amerikanische Fahrzeug -Rückruf für den Monat Januar 2015 unter Verwendung der JavaScript -Bibliothek von Dimple.js JavaScript

Key Takeaways

    Datenvisualisierungen können mit JavaScript und der Dimple.js -Bibliothek erstellt werden, die auf D3.JS basieren, um große Datenmengen überzeugend zu präsentieren.
  • Der Prozess beinhaltet das Festlegen eines Ziels, die Arbeit mit Daten und die Bindung von Daten an das D3 -Objekt. In diesem Fall wurde ein Balkendiagramm mit der Gesamtzahl der Fahrzeuge des Herstellers für Januar 2015 erstellt.
  • Datenbereinigung und -vorbereitung ist für eine erfolgreiche Datenvisualisierung von entscheidender Bedeutung. Dies umfasst das Extrahieren relevanter Daten, das Reduzieren von Spalten auf eine Teilmenge der verfügbaren Personen und die manuelle Gruppierung von Daten basierend auf bestimmten Kriterien.
  • Die D3.JS-Bibliothek bietet außerhalb des Box-Unterstützung für verschiedene Datendateiformate wie CSV, TSV oder JSON und kann sie zur Verarbeitung in ein JavaScript-Array umwandeln.
  • Zusätzliche Funktionen wie Tooltips, ästhetische Übergänge und Beschriftungsmanipulationen können hinzugefügt werden, um die Datenvisualisierung und die Benutzerinteraktion zu verbessern.
das Ziel

festlegen

Die NHTSA

/odi Bereitstellung einer Rückrufdatei (die über ihre Website zugänglich ist), die alle NHTSA-Sicherheitsfehler- und Compliance-Kampagnen seit 1967 enthält. Unser Ziel ist es, die Daten für einen bestimmten Monat (( Januar 2015) und um ein Balkendiagramm daraus zu erstellen, das die Gesamtzahl der Fahrzeuge des Herstellers darstellt. Sehen Sie sich Visualisierung von Daten mit D3.JS an Veranschaulichen Sie Ihre Daten mit JavaScript

Sehen Sie sich diesen Kurs an Sehen Sie sich diesen Kurs an Erstellen Sie Datenvisualisierungen in JavaScript mit Dimple und D3 Diese Datenvisualisierung wird nicht erklärend sein (wir werden Rohdaten zeigen) und kaum explorativ (es gibt nicht viel Erzählungen für die Zuschauer, um aus diesen Daten zu erstellen). Ich beabsichtige jedoch, neben dem Diagramm zusätzliche Informationen anzuzeigen, wenn ein Benutzer über einer der Balken schwebt.

Das ist, was wir am Ende haben:

Erstellen Sie Datenvisualisierungen in JavaScript mit Dimple und D3 Sie können eine (kleinere) Live -Demo am Ende des Artikels sehen oder das Original auf Codepen anzeigen.

Arbeiten mit Daten

Nur die Daten behalten, die wir benötigen

Alle in diesem Abschnitt genannten Dateien finden Sie in unserem GitHub -Repo.

Die ursprüngliche Datei flat_rcl.txt (link) ist eine von Tab-tisch getrennte Wertedatei, die ein Lot von Daten enthält-109.682 Datensätze, um genau zu sein. Es gibt eine begleitende Datei rcl.txt (Link), in der die auf diese Daten bezogenen Spalten beschrieben werden.

Da wir nur an den Daten für Januar 2015 interessiert sind - oder eher die Aufzeichnungen, für die das Datum der Datensatzerstellung Januar 2015 ist - kann der Rest der Aufzeichnungen entfernt werden. Dazu verwende ich das OpenOffice -Calc -Tabellenkalkulationsprogramm (obwohl jede andere Tabellenkalkulationssoftware ausreicht). Die resultierende Datei, rcl_january_2015.csv (Link), zählt nur 201 Datensätze.

Wir müssen nun die Spalten auf eine Teilmenge der verfügbaren Personen reduzieren, nämlich:
Datum der Aufzeichnung erstellen, Hersteller, Modell, Modelljahr, Beginn der Herstellung, Enddatum der Herstellung, potenzielle Anzahl betroffener Einheiten, Mangelübersicht, Konsequenzübersicht und Korrekturzusammenfassung. Wir können dann die Spaltennamen in die erste Zeile der resultierenden CSV -Datei hinzufügen, rcl_january_2015_clean.csv (Link).

Dies gibt uns die Rohdaten, die wir für unsere Visualisierung benötigen.

Erstellen Sie die Datenstruktur

Jetzt müssen wir die Rückrufe von Maker manuell gruppieren und die Datensätze mit demselben Defekt kombinieren. Wir müssen sicherstellen, dass die kombinierten Datensätze nach dem Datum sortiert werden, dann nach Modell und dass sie eine kumulative potenzielle Gesamtzahl der betroffenen Einheiten haben.

Wir werden eine JSON -Datenstruktur für diese Gruppierung verwenden.

Um dies zu veranschaulichen, verarbeiten wir die ersten drei Einträge der Datei rcl_january_2015_clean.csv. Diese können in eine Zeile unterteilt werden, in der die J4500 des MCI aus den Jahren 2013, 2014 und 2015, die die gleichen Herstellungsjahre haben, den gleichen Defekt aufweisen. Die potenzielle Anzahl der betroffenen Einheiten gruppiert diese drei Modelle bereits im Datensatz zusammen.

Hier ist die JSON -Datenstruktur, die wir verwenden werden:

<span>{
</span>  <span>"items": [
</span>    <span>{
</span>      <span>"item": {
</span>        <span>"date": "",
</span>        <span>"models": [
</span>          <span>"" 
</span>        <span>],
</span>        <span>"units": "",
</span>        <span>"defect": "",
</span>        <span>"consequence": "",
</span>        <span>"corrective": ""
</span>      <span>}
</span>    <span>}
</span>  <span>]
</span><span>}</span>
Nach dem Login kopieren
Nach dem Login kopieren

Nachdem wir diesen Prozess iteriert haben (und den Doppelzitaten entkommen) haben wir jetzt die CSV -Datei rcl_january_2015_json.csv (Link). Aus Gründen der Kürze zeigt unser Arbeitsbeispiel nur die ersten drei Hersteller der Originaldatei (3 von 46).

Bindungsdaten an das D3 -Objekt

d3 bietet außergewöhnliche Unterstützung für Datendateiformate wie CSV, TSV oder JSON. Ein Ajax -Aufruf wird ausgeführt, um die Datei abzurufen, dann wird er analysiert und in ein JavaScript -Array umgewandelt. Die von uns erstellte CSV -Datei kann mit dem folgenden Code abgerufen werden:

d3<span>.csv("RCL.csv", function (data) {
</span>  <span>// process the data
</span><span>});</span>
Nach dem Login kopieren
Nach dem Login kopieren

Wir können das JavaScript -Array auch direkt im Code definieren, das wir hier für die Zwecke unserer Codepen -Demo tun werden. Die Datenstruktur wurde so nah wie möglich an das Array D3 aus der CSV -Datei erstellt.

data <span>= [
</span>  <span>{
</span>    <span>'Record creation date':'20150105',
</span>    <span>'Maker':'MCI',
</span>    <span>'Potential number of units affected':'109',
</span>    <span>'JSON data': '{
</span>      <span>"items":[
</span>        <span>{
</span>          <span>"item": {
</span>            <span>"date":"January, 5 2015",
</span>            <span>"models":[
</span>              <span>"J4500 (years 2013, 2014, 2015) ..."
</span>            <span>],
</span>            <span>"units":"109",
</span>            <span>"defect":"...",
</span>            <span>"consequence":"...",
</span>            <span>"corrective":"..."
</span>          <span>}
</span>        <span>}
</span>      <span>]
</span>    <span>}'
</span>  <span>},
</span>  <span>...
</span><span>];</span>
Nach dem Login kopieren
Nach dem Login kopieren

Und jetzt lass uns eintauchen!

<span><span><span><div</span> id<span>="RecallsChart"</span>></span><span><span></div</span>></span>
</span><span><span><span><div</span> id<span>="RecallDetails"</span>></span><span><span></div</span>></span></span>
Nach dem Login kopieren
Nach dem Login kopieren

Die HTML ist unkompliziert: zwei Divs, eine für das Diagramm (Rückrufschart), der andere, um zusätzliche Details anzuzeigen, wenn der Benutzer über einen der Balken (Rückrufdetails) schwebt.

<span>{
</span>  <span>"items": [
</span>    <span>{
</span>      <span>"item": {
</span>        <span>"date": "",
</span>        <span>"models": [
</span>          <span>"" 
</span>        <span>],
</span>        <span>"units": "",
</span>        <span>"defect": "",
</span>        <span>"consequence": "",
</span>        <span>"corrective": ""
</span>      <span>}
</span>    <span>}
</span>  <span>]
</span><span>}</span>
Nach dem Login kopieren
Nach dem Login kopieren

Wir fügen dem Div -Element zuerst ein SVG -Objekt hinzu und verweisen auf seine ID. Dann verknüpfen wir unsere Daten mit unserem neuen Diagramm, das in der SVG gerendert wird. Schließlich setzen wir die Diagrammgrenzen manuell, um sie in seinem übergeordneten Div.

richtig zu positionieren
d3<span>.csv("RCL.csv", function (data) {
</span>  <span>// process the data
</span><span>});</span>
Nach dem Login kopieren
Nach dem Login kopieren

Wir setzen die x-Achse des Diagramms auf das Maker-Feld unserer Daten-wir verwenden die addCategoryaxis-Methode, da die Hersteller kategoriale Daten darstellen. Wir bestellen die Macher alphabetisch mit der AddorderRule-Methode und verbergen den X-Achse-Titel (der der Macher gewesen wäre), da die Namen der Macher selbsterklärend sind.

data <span>= [
</span>  <span>{
</span>    <span>'Record creation date':'20150105',
</span>    <span>'Maker':'MCI',
</span>    <span>'Potential number of units affected':'109',
</span>    <span>'JSON data': '{
</span>      <span>"items":[
</span>        <span>{
</span>          <span>"item": {
</span>            <span>"date":"January, 5 2015",
</span>            <span>"models":[
</span>              <span>"J4500 (years 2013, 2014, 2015) ..."
</span>            <span>],
</span>            <span>"units":"109",
</span>            <span>"defect":"...",
</span>            <span>"consequence":"...",
</span>            <span>"corrective":"..."
</span>          <span>}
</span>        <span>}
</span>      <span>]
</span>    <span>}'
</span>  <span>},
</span>  <span>...
</span><span>];</span>
Nach dem Login kopieren
Nach dem Login kopieren

Wir setzen die y-Achse des Diagramms auf die potenzielle Anzahl der Einheiten betroffenen Bereiche unserer Daten. Wir hätten die addMeasureAxis . In diesem Fall gibt eine logarithmische Skala mehr Raum für kleinere Werte. Daher verwenden wir die Addlogaxis -Methode, die standardmäßig Basis 10.

<span><span><span><div</span> id<span>="RecallsChart"</span>></span><span><span></div</span>></span>
</span><span><span><span><div</span> id<span>="RecallDetails"</span>></span><span><span></div</span>></span></span>
Nach dem Login kopieren
Nach dem Login kopieren

Jetzt, da wir unsere Achsen definiert haben, können wir sie zusammenbinden, um eine Grafik zu machen. Zu diesem Zweck wählen wir ein Balkendiagramm über Dimple.Plot.BAR und binden es an das Feld Maker -Daten. Das zweite Array -Element, JSON Data, wird den JSON -Teil unserer Daten an jede Balken verbinden und es uns ermöglichen, auf die richtigen Daten zuzugreifen, wenn sie mit der Maus über die Balken schweben.

<span>var svg = dimple.newSvg("#RecallsChart", 800, 560);
</span><span>var myChart = new dimple<span>.chart</span>(svg, data);
</span>myChart<span>.setBounds(60, 30, 710, 355)</span>
Nach dem Login kopieren
Standardmäßig werden Tooltips angezeigt, wenn Sie mit der Maus über einer Ploteinheit (hier, einer Balken) schweben und die Achsen und Seriendaten anzeigen. In unserem Fall: Der Hersteller (X-Achse-Wert), die potenzielle Anzahl der betroffenen Einheiten (y-Achsenwert) und der einfache Textwert unserer JSON-Daten.

Die GetToolTipText -Funktion wird hier überladen, um die JSON -Daten zu verarbeiten und sie in einer anderen DIV zur Seite anzuzeigen. Es gibt ein Array der Daten zurück, die wir als Tooltip anzeigen möchten, nämlich den Namen des Herstellers (das erste aggregierte Feld unserer Datenlinie) und die Anzahl der betroffenen Einheiten (die wir aus der Y-Achse erhalten und die wir lokalisieren, Das generische englische Zahlformat über die integrierte tolocalestring JavaScript-Methode).

Aber kehren wir zur Analyse der JSON -Daten zurück.

Die beiden aggregierten Felder, auf die wir auf (Aggfield [0] und Aggfield [1]) zugreifen des zugrunde liegenden Elementobjekts.

Wir analysieren die JSON -String mit der Parsejson -Funktion von Jquery, setzen eine Reihe von Titeln in voller Länge, die den Schlüssel unseres JSON -Objekts entsprechen, und bauen dann durch das Iterieren über das JSON -Objekt eine HTML Relastdetails.

<span>var x = myChart.addCategoryAxis("x", "Maker");
</span>x<span>.addOrderRule("Maker");
</span>x<span>.title = '';</span>
Nach dem Login kopieren
Wir zeichnen endlich das Diagramm mit einem ästhetischen Übergang mit der elastischen Leichtigkeit mit einer Sekunde Verzögerung.

myChart<span>.addLogAxis("y", "Potential number of units affected");</span>
Nach dem Login kopieren
habe ich endlich gesagt? Nun, hier fügen wir den X-Achsen-Bezeichnungen einen weiteren ästhetischen Trick hinzu.

standardmäßig werden die X-Achsenbezeichnungen horizontal geschrieben. Aber sie können sich leicht überlappen, also werden wir sie stattdessen vertikal schreiben. Hier ist die Exposition seiner zugrunde liegenden D3 -Objekte durch Dimple nützlich. Bitte beachten Sie, dass wir es nur ändern können, sobald das Diagramm gezogen wurde, daher nach dem Aufruf von mychart.draw ().

Um dies zu tun, wählen wir zuerst jeden Labeltext oder vielmehr die mit der X-Achse verknüpfte passende SVG-Form für jedes Etikett aus. Die Methode getBbox () gehört zu den Schnittstellenvegel-VGlocatable und gibt ein SVGRECT -Objekt zurück, das das Begrenzungsfeld definiert und seine Koordinaten, Höhe und Breite freigibt. Wir führen dann eine Rotation der SVG-Box und eine leichte vertikale Übersetzung durch, um sie der x-Achsenlinie näher zu bringen.

Und hier ist das Endergebnis:

Siehe die Pen -Fahrzeuge für Januar 2015 von SitePoint (@sinepoint) auf CodePen.

Die Breite dieses Stifts wurde reduziert, um ihn in den Artikel zu passen. Sie können den ursprünglichen Codepen hier sehen

Schlussfolgerung

In diesem Artikel haben wir gesehen, wie Daten für die Datenvisualisierung aufräumen und vorbereitet werden und speziell eine Datenstruktur definieren, die dem Endergebnis entspricht, das wir berücksichtigen. Wir haben sowohl die Bibliotheken dimple.js als auch d3.js mit einigen begrenzten Aufrufen von JQuery (hauptsächlich mit der JSON -Verarbeitung) verwendet. Wir haben das Balkendiagramm aus unseren Daten mit ein wenig explorativen Interaktion gezogen, indem wir die Tooltip -Funktion von Dimple überladen. Wir haben auch auf das zugrunde liegende D3-Objekt zugegriffen, um die X-Achse-Bezeichnungen zu manipulieren.

Als Randnotiz ist SVG jetzt weit verbreitet, aber es ist eine gute Praxis, es vorher zu überprüfen (zum Beispiel mit Modernizr) und einen Fallback wie ein PNG -Bild überall dort zu liefern. Natürlich sollte auch die bedingte Belastung von D3.js und dimple.js berücksichtigt werden.

Wenn Sie tiefer in die Datenvisualisierung eintauchen möchten, bietet Udacity ein selbstgepaartes MOOC mit dem Titel Datenvisualisierung und D3.Js, die Visualisierungskonzepte, die Verwendung von D3.Js und Dimple.js, narrative Strukturen und Animationen abdecken. Außerdem ist die Website von Mike Bostock (der Schöpfer von D3.JS) die perfekte Quelle, wenn Sie die Konzepte hinter dieser Bibliothek verstehen möchten, während sowohl Dimple als auch D3 eine Liste von Beispielen angeben, aus denen Sie lernen können.

häufig gestellte Fragen (FAQs) zum Erstellen von Datenvisualisierungen mit JavaScript, Dimple und D3

Wie kann ich ein Multiline -Diagramm mit Dimple und D3 erstellen. Zunächst müssen Sie Ihre HTML -Datei einrichten und die Bibliotheken D3 und Dimple einschließen. Dann müssen Sie Ihre Daten laden, die sich in verschiedenen Formaten wie CSV, JSON oder TSV befinden können. Sobald Ihre Daten geladen sind, können Sie ein neues SVG -Objekt erstellen und seine Abmessungen festlegen. Danach können Sie ein neues Dimple -Diagramm erstellen, die Achsen angeben und die Zeilen für jede Datenreihe hinzufügen. Schließlich können Sie das Erscheinungsbild des Diagramms anpassen und bei Bedarf Interaktivität hinzufügen. Visualisierungen, aber sie haben einige Unterschiede. D3 ist eine Bibliothek auf niedriger Ebene, die viel Flexibilität und Kontrolle bietet, aber komplex und ausführlich sein kann. Auf der anderen Seite basiert Dimple auf D3 und bietet eine API auf höherer Ebene, die den Prozess des Erstellens gängiger Arten von Diagrammen, einschließlich Zeilendiagrammen, vereinfacht. Es bietet jedoch möglicherweise nicht so viel Flexibilität wie D3 für komplexere oder benutzerdefinierte Visualisierungen. Erfahrung und zusätzliche Erkenntnisse geben. Sie können Tooltips hinzufügen, die weitere Informationen anzeigen, wenn der Benutzer über einen Datenpunkt schwebt. Sie können auch Ereignishörer hinzufügen, die auf Benutzeraktionen wie Klicks oder Mausbewegungen reagieren. Sie können beispielsweise eine Zeile hervorheben oder eine detaillierte Ansicht der Daten anzeigen, wenn der Benutzer darauf klickt. zum Anpassen des Erscheinungsbilds Ihres Diagramms. Sie können die Farben, Schriftarten und Größen der Elemente ändern. Sie können auch die Skalen und Achsen einstellen, um Ihre Daten besser darzustellen. Sie können beispielsweise eine logarithmische Skala für Daten verwenden, die mehrere Größenordnungen umfassen, oder Sie können die Etiketten auf der X-Achse für eine bessere Lesbarkeit drehen.

Umgang mit fehlenden oder inkonsistenten Daten ist ein wichtiger Bestandteil der Datenvisualisierung. Dimple bietet verschiedene Methoden für den Umgang mit solchen Daten. Sie können die Methode von Dimple.FilterData () verwenden, um unerwünschte Werte herauszufiltern, oder Sie können die Methode von Dimple.addmeasureAxis () verwenden, um Daten zu aggregieren und fehlende Werte auszufüllen. Sie können auch die Datenmanipulationsfunktionen von D3 verwenden, um Ihre Daten zu reinigen und vorzuarbeiten, bevor Sie sie visualisieren.

Wie kann ich ein Balkendiagramm mit Dimple und D3 erstellen? Sie müssen Ihre Daten laden, ein SVG -Objekt erstellen und ein neues Dimple -Diagramm erstellen. Anstatt Linien hinzuzufügen, fügen Sie jedoch Stangen mit der Methode von Dimple.addSeries () hinzu. Sie können auch das Erscheinungsbild der Balken anpassen und die Interaktivität bei Bedarf hinzufügen. Seien Sie nützlich, um Ihre Datenvisualisierung zu teilen oder zu präsentieren. Sie können die Node () -Methode von D3 verwenden, um das SVG -Element des Diagramms zu erhalten, und dann eine Bibliothek wie Canvg oder JSPDF zum Umwandeln des SVG in ein Bild oder PDF. Beachten Sie, dass dies möglicherweise zusätzliche Setup und Abhängigkeiten erfordern.

Wie kann ich mein Dimple -Diagramm animieren? Sie können die Übergangsmethoden von D3 verwenden, um Änderungen in den Daten oder im Erscheinungsbild des Diagramms zu animieren. Sie können beispielsweise die Zeilen in einem Zeilendiagramm animieren, um einen reibungslosen Übergang von einem Zustand in einen anderen zu übergeben, wenn sich die Daten ändert. Ein Streudiagramm mit Dimple und D3 beinhaltet ähnliche Schritte beim Erstellen einer Linie oder eines Balkendiagramms. Sie müssen Ihre Daten laden, ein SVG -Objekt erstellen und ein neues Dimple -Diagramm erstellen. Anstatt Linien oder Balken hinzuzufügen, fügen Sie jedoch Punkte mit der Methode von Dimple.addSeries () hinzu. Sie können auch das Erscheinungsbild der Punkte anpassen und die Interaktivität bei Bedarf hinzufügen. zum Erstellen anderer Arten von Diagrammen. Sie müssen Ihre Daten laden, ein SVG -Objekt erstellen und ein neues Dimple -Diagramm erstellen. Anstatt jedoch Linien, Balken oder Punkte hinzuzufügen, fügen Sie jedoch einen Kuchen mit der Methode von Dimple.AdSeries () hinzu. Sie können auch das Erscheinungsbild des Kuchens anpassen und nach Bedarf Interaktivität hinzufügen.

Das obige ist der detaillierte Inhalt vonErstellen Sie Datenvisualisierungen in JavaScript mit Dimple und D3. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage