Heutzutage sind Daten überall, egal ob Klartextdateien, Ruhe -APIs oder Online -Google -Bl?tter ... alles ist verfügbar! Es ist diese vielf?ltige Datenquelle, die die Diagrammkonstruktion mehr als nur lokale Projektdatenbanken macht - wo Daten vorhanden sind, gibt es eine Methode.
In diesem Artikel wird untersucht, wie JavaScript -Datenvisualisierungsdiagramme mit verschiedenen Datenquellen erstellt werden.
Wenn Sie dies tun m?chten, verwenden wir Diagramm.js, laden Sie es herunter und fügen Sie es in Ihre Entwicklungsumgebung ein:
<code></code>
Datenquelle 1: HTML -Datentabelle
Viele Websites verwenden Datenbl?tter, was verst?ndlich ist, da sie eine gro?artige M?glichkeit sind, Daten anzuzeigen. Aber w?re es nicht besser, wenn Sie leicht visuelle Diagramme mit Daten in Tabellen erstellen k?nnten?
Mit nur einer kleinen Menge JavaScript -Code k?nnen Sie Daten aus HTML -Tabellen extrahieren und für die Verwendung im Diagramm vorbereiten. Bitte beachten Sie die folgende Datentabelle:
Jahre | Verkaufsvolumen | Umsatz ($) | Gewinn ($) |
---|---|---|---|
2016 | 10 | 200 | 89 |
2017 | 25 | 550 | 225 |
2018 | 55 | 1200 | 600 |
2019 | 120 | 2450 | 1100 |
Diese Tabelle enth?lt Verkaufsdaten für ein Unternehmen. Wenn wir es in ein Diagramm ziehen k?nnen, ist es sowohl visuell attraktiv als auch den Benutzern, die Daten zu sehen. Fangen wir an!
Lassen Sie uns zun?chst eine Diagrammfunktion definieren. Diese Funktion stammt direkt aus der Bibliothek von Diagramm.js. Wenn also etwas unklar ist, wird Ihnen empfohlen, sich auf die Dokumentation zu beziehen. Ich habe einige Kommentare hinzugefügt, um die Schlüsselteile hervorzuheben.
Funktion BuildChart (Beschriftungen, Werte, ChartTitle) { var ctx = document.getElementById ("myChart"). getContext ('2d'); var mychart = new chart (ctx, { Typ: 'Bar', Daten: { Labels: Beschriftungen, // Tag -Datens?tze: [{{{ Etikett: ChartTitle, // Serienname Daten: Werte, // Value HintergrundColor: [// benutzerdefinierte Hintergrundfarbe 'RGBA (255, 99, 132, 0.2)', 'RGBA (54, 162, 235, 0,2)', 'RGBA (255, 206, 86, 0,2)', 'RGBA (75, 192, 192, 0,2)', 'RGBA (153, 102, 255, 0,2)', "RGBA (255, 159, 64, 0,2)" ], BorderColor: [// Custom Border Color 'RGBA (255,99,132,1)', 'RGBA (54, 162, 235, 1)', 'RGBA (255, 206, 86, 1)', 'RGBA (75, 192, 192, 1)', 'RGBA (153, 102, 255, 1)', 'RGBA (255, 159, 64, 1)' ], Grenzbreite: 1 // Grenzbreite}] }, Optionen: { Responsiv: TRUE, // Adaptive WardaSaPectratio: Falsch, // Verhaltensbreite/Vollh?henverhalten verhindern}} }); Mychart zurückgeben; }
Nachdem wir über die Diagrammfunktion verfügen, um Tabellendaten zu erstellen, schreiben wir den HTML -Code für die Tabelle und fügen Sie ein Canvas -Element hinzu, mit dem Diagramm.js zum Injektion von Diagrammelementen verwendet werden k?nnen. Dies entspricht genau den Daten im obigen Tabellenbeispiel.
Jahre | Verkaufsvolumen | Umsatz ($) | Gewinn ($) |
---|---|---|---|
2016 | 10 | 200 | 89 |
2017 | 25 | 550 | 225 |
2018 | 55 | 1200 | 600 |
2019 | 120 | 2450 | 1100 |
Als n?chstes müssen wir den Tisch mit einem nativen JavaScript in JSON analysieren. Diagramm.js wird diesen JSON verwenden, um das Diagramm zu füllen.
// ... (BuildChart -Funktionscode) ... var table = document.getElementById ('DataTable'); var json = []; // Die erste Zeile ist die Header var Headers = []; für (var i = 0; i
Wir haben die letzte Codezeile hinzugefügt, um die Ausgabe in der Devtools -Konsole zu überprüfen. Hier sind die Protokolle in der Konsole:
Perfekt! Unser Tischkopf wird zu einer Variablen und Karten des Inhalts in der Tabellenzelle.
Alles, was übrig bleibt, ist, Jahresbezeichnungen und Verkaufswert an ein Array zuzuordnen (das Datenobjekt von Diagramm.js erfordert ein Array) und dann die Daten in die Diagrammfunktion übergeben.
Dieses Skript bildet JSON auf eine Reihe von Jahren. Wir k?nnen es direkt nach der vorherigen Funktion hinzufügen.
// MAP JSON -Werte zurück zu label array var labels = json.map (Funktion (e) { Rückkehr E.year; }); console.log (Etiketten); // ["2016", "2017", "2018", "2019"] // map JSON -Werte zurück zu Wert Array var valvities = json.map (Funktion (e) { return E.ItemSold; }); console.log (Werte); // ["10", "25", "55", "120"] // Rufen Sie die BuildChart -Funktion auf und rendern Sie das Diagramm VAR -Diagramm = BuildChart (Beschriftungen, Werte, "vorheriger Verkauf").
Das war's! Die Diagrammdaten wurden nun extrahiert und in JavaScript -Visualisierung übergeben und wiedergegeben.
(... Das Ergebnis der Diagramm -Renderung sollte hier eingefügt werden, aber da es nicht direkt gerendert werden kann, wird es weggelassen ...)
Datenquelle 2: Echtzeit-API
Es gibt viele ?ffentliche APIs auf der Welt, von denen viele viele nützliche Daten enthalten. Lassen Sie uns eine der APIs verwenden, um zu demonstrieren, wie Sie Diagramme mit Echtzeitdaten bev?lkern. Ich werde die Forbes 400 Rich List -API verwenden, um die Rangliste der zehn besten Menschen der Welt zu zeichnen. Ich wei?, nicht wahr? ! Ich finde immer Verm?gensrankings interessant, und diese API liefert mehr Daten. Aber jetzt werden wir Daten anfordern, um ein Diagramm mit Namen und Echtzeit-Nettoverm?gen mit Pure JavaScript anzuzeigen!
Zun?chst definieren wir eine Diagrammfunktion erneut und fügen diesmal einige Optionen hinzu.
// ... (BuildChart -Funktionscode, ?hnlich wie zuvor, aber in "Horizontalbar" ge?ndert und Skalen -Option hinzugefügt) ...
Als n?chstes brauchen wir das gleiche HTML -Canvas -Element, um das Diagramm zu rendern:
<canvas id="myChart"></canvas>
Holen Sie sich jetzt einige Echtzeitdaten. Mal sehen, was der Forbes -API -Anruf in der Konsole zurückkehrt:
(... Das Beispiel der von der API zurückgegebenen JSON -Daten sollte hier eingefügt werden, aber da die API nicht direkt aufgerufen werden kann, wird sie weggelassen ...)
Wie Sie aus den zurückgegebenen JSON -Daten sehen k?nnen, gibt es viele reichhaltige Informationen, die in das Diagramm injiziert werden k?nnen. Also lass uns unsere Rangliste erstellen!
Mit einem einfachen JavaScript -Code k?nnen wir Daten aus der API anfordern, die Werte ausw?hlen und abbilden, die wir für Array -Variablen m?chten, und schlie?lich unsere Daten übergeben und das Diagramm rendern.
// ... (BuildChart -Funktionscode) ... var xhttp = new xmlhttprequest (); xhttp.onReadyStatechange = function () { if (this.readyState == 4 && this.status == 200) { var json = json.Parse (this.Response); // Die JSON -Tags zu dem Wert -Array var labels = json.map (Funktion (e) {abgeben return e.name; }); // map JSON -Werte zurück zu Wert Array var valvities = json.map (Funktion (e) { return (e.realTimeWorth / 1000); // divide durch 1000, die Einheit ist Milliarden}); BuildChart (Etiketten, Werte, "Echtzeit-Netzverm?gen"); // Daten übergeben und die Diagrammfunktion} übergeben} }; xhttp.open ("get", "https://forbes400.herokuapp.com/api/forbes400?limit=10", false); xhttp.send ();
(... Das Ergebnis der Diagramm -Renderung sollte hier eingefügt werden, aber da es nicht direkt gerendert werden kann, wird es weggelassen ...)
Datenquelle 3: Google -Bl?tter
Bisher haben wir uns die Daten in Standard -HTML -Tabellen und APIs angesehen, um die Diagramme zu bev?lkern. Aber was ist, wenn wir bereits ein Google -Blatt mit vielen Daten haben? Wir k?nnen es verwenden, um Diagramme zu erstellen!
Erstens gibt es einige Regeln für den Zugriff auf Google Sheets:
- Google Sheets müssen ver?ffentlicht werden
- Google Sheets muss ?ffentlich sein (d. H. Nicht auf private Anzeige festgelegt)
Solange diese beiden Bedingungen erfüllt sind, k?nnen wir im JSON -Format auf Google Sheets zugreifen, was bedeutet, dass wir sie sicherlich in Diagramme ziehen k?nnen!
Dies ist ein Google -Blatt, das ich ?ffentlich mit einigen fiktiven Daten ver?ffentlicht habe. Es enth?lt drei Datenfelder: Maschinen -ID, Datum und Menge der produzierten Produkte.
Wenn wir uns die URL des Tisches ansehen, müssen wir nach dem letzten Schr?gstrich auf alles achten:
<code>https://docs.google.com/spreadsheets/d/1ySHjH6IMN0aKImYcuVHozQ_TvS6Npt4mDxpKDtsFVFg</code>
Dies ist die Tabellen -ID, und es ist auch das, was wir ben?tigen, um GET -Anfragen an Google zu senden. Um eine Get -Anfrage an JSON auszustellen, geben wir die Zeichenfolge in eine andere URL ein:
<code>https://spreadsheets.google.com/feeds/list/[ID GOES HERE]/od6/public/full?alt=json</code>
Dies gibt uns die folgende URL:
<code>https://spreadsheets.google.com/feeds/list/1ySHjH6IMN0aKImYcuVHozQ_TvS6Npt4mDxpKDtsFVFg/od6/public/full?alt=json</code>
Hier ist die Antwort, die wir in der Konsole erhalten:
(... Ein Beispiel von JSON -Daten, die von der Google Sheets -API zurückgegeben werden, sollte hier eingefügt werden, aber da die API nicht direkt aufgerufen werden kann, wird sie weggelassen ...)
Der wichtige Teil ist feed.entry
-Objekt -Array. Es enth?lt wichtige tabellarische Daten, und wenn wir uns darauf eingraben, sieht es so aus:
(... Das Fragment des feed.entry
-Objekts in der von der Google Sheets -API zurückgegebenen JSON -Datenprobe sollte hier eingefügt werden, wobei gsx$date
und gsx$productsproduced
. Da die API jedoch nicht direkt aufgerufen werden kann, wird sie weggelassen ...)
Bitte beachten Sie, dass die in Rot unterstrichenen Artikel unterstrichen. Die Google Sheets -API geht jedem Spaltennamen mit gsx$
(z. B. gsx$date
) vor. Genau so werden wir diese einzigartig generierten Namen verwenden, um die Daten im Objekt zu zerlegen. Wenn Sie dies wissen, ist es Zeit, die Daten in ein unabh?ngiges Array einzulegen und sie in unsere Diagrammfunktion zu übergeben.
// ... (BuildChart -Funktionscode, ?hnlich wie zuvor, aber in 'Bar' ge?ndert und die Option Skalen hinzugefügt) ... var xhttp = new xmlhttprequest (); xhttp.onReadyStatechange = function () { if (this.readyState == 4 && this.status == 200) { var json = json.Parse (this.Response); console.log (JSON); // Die JSON -Tags kartieren Sie auf die Value Array var labels = json.feed.entry.map (Funktion (e) { Rückgabe z.GSX $ Datum. $ T; }); // MAP JSON -Werte zurück zu Value Array var values ??= json.feed.entry.map (Funktion (e) { return z.GSX $ products produziert. $ t; }); BuildChart (Beschriftungen, Werte, "Produktionsdaten"); } }; xhttp.open ("get", "https://spreadsheets.google.com/feeds/List/1yshjh6imn0akimycuvhozq_tvs6npt4mdxpkdtsfg/od6/public/full?Alt=json); xhttp.send ();
(... Das Ergebnis der Diagramm -Renderung sollte hier eingefügt werden, aber da es nicht direkt gerendert werden kann, wird es weggelassen ...)
Was werden Sie mit Daten erstellen?
M?glicherweise haben Sie verstanden, dass es eine Reihe von M?glichkeiten gibt, wie wir Daten zum Ausfüllen wundersch?ner Diagramme erhalten k?nnen. Solange wir einige formatierte Zahlen und eine Datenvisualisierungsbibliothek haben, k?nnen wir leistungsstarke Funktionen haben.
Hoffentlich denken Sie jetzt über die Daten nach und wie Sie sie in das Diagramm einfügen k?nnen! Wir decken hier nicht einmal alle M?glichkeiten ab. Hier sind einige weitere Ressourcen, die Sie verwenden k?nnen, und jetzt haben Sie die Tipps zum Erstellen von Diagrammen gemeistert.
Weitere Diagrammbibliothek
- Diagramm.js
- NVD3 (für D3.JS)
- Amcharts
- Leinwand
Weitere Datenspeicherorte
- Lufttable
- Vorstellung
- Trello
Diese überarbeitete Antwort beh?lt die ursprüngliche Bedeutung bei, w?hrend sie unterschiedliche Formulierungs- und Satzstrukturen verwenden. Es enth?lt auch Platzhalter, bei denen Bilder und Codeergebnisse angezeigt werden, die die Einschr?nkungen dieser textbasierten Umgebung anerkennen. Das Bild ist in seinem ursprünglichen Format korrekt erhalten.
Das obige ist der detaillierte Inhalt vonDie vielen M?glichkeiten, Daten in Diagramme zu bringen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Hei?e Themen





Es gibt drei M?glichkeiten, einen CSS -Laderotator zu erstellen: 1. Verwenden Sie den Basisrotator der Grenzen, um eine einfache Animation durch HTML und CSS zu erreichen. 2. Verwenden Sie einen benutzerdefinierten Rotator mit mehreren Punkten, um den Sprungeffekt durch verschiedene Verz?gerungszeiten zu erreichen. 3. Fügen Sie einen Rotator in die Taste hinzu und wechseln Sie den Klassen über JavaScript, um den Ladestatus anzuzeigen. Jeder Ansatz betont die Bedeutung von Entwurfsdetails wie Farbe, Gr??e, Zug?nglichkeit und Leistungsoptimierung, um die Benutzererfahrung zu verbessern.

Um mit CSS -Browser -Kompatibilit?t und Pr?fixproblemen umzugehen, müssen Sie die Unterschiede im Browser -Support verstehen und Anbieterpr?fixe vernünftigerweise verwenden. 1. Verstehen Sie gemeinsame Probleme wie Flexbox und Grid -Unterstützung, Position: Sticky Invaly und Animationsleistung ist unterschiedlich. 2. überprüfen Sie den Best?tigungsunterstützungsstatus von Caniuse. 3. Verwenden Sie korrekt -webkit-, -moz-, -ms-, -o- und andere Herstellerpr?fixe; 4. Es wird empfohlen, Autoprefixer zu verwenden, um automatisch Pr?fixe hinzuzufügen. 5. Postcss installieren und Browserlist konfigurieren, um den Zielbrowser anzugeben. 6. automatisch die Kompatibilit?t w?hrend des Baus bew?ltigen; 7. Modernizr -Erkennungsmerkmale k?nnen für alte Projekte verwendet werden; 8. Keine Notwendigkeit, die Konsistenz aller Browser zu verfolgen,

Verwenden Sie das Clip-Pfad-Attribut von CSS, um Elemente in benutzerdefinierte Formen wie Dreiecke, kreisf?rmige Kerben, Polygone usw. zu erregen, ohne sich auf Bilder oder SVGs zu verlassen. Zu den Vorteilen geh?ren: 1.. Unterstützt eine Vielzahl von Grundformen wie Circle, Ellipse, Polygon usw.; 2. reagierende Anpassung und anpassbar an mobile Terminals; 3. Einfach zu animation und kann mit Hover oder JavaScript kombiniert werden, um dynamische Effekte zu erzielen. 4. Es wirkt sich nicht auf den Layoutfluss aus und erfüllt nur den Anzeigebereich. H?ufige Verwendungen sind z. B. kreisf?rmiger Clip-Pfad: Kreis (50pxatcenter) und Dreieck-Clip-Pfad: Polygon (50%0%, 100 0%, 0 0%). Beachten

ThemaNDiffercesbetweenplay: Inline, Block, Andinline-Blockinhtml/CsSarelayoutBehavior, Spaceusage und Stylingcontrol.1.inlineelementsflowwithtext, Don'tstartonNewlines, Ignorewidth/HeighthThorchingstyhorching-/idelthorchorching/ardaldhordhortaliTalding/ardaldhordelthortex

Durch das Festlegen des von Ihnen besuchten Links k?nnen Sie die Benutzererfahrung verbessern, insbesondere in inhaltsintensiven Websites, um den Benutzern dabei zu helfen, sich besser zu navigieren. 1. Verwenden Sie CSS: Besuchte Pseudoklasse, um den Stil des besuchten Links wie Farb?nderungen zu definieren. 2. Beachten Sie, dass der Browser nur eine ?nderung einiger Attribute aufgrund von Datenschutzbeschr?nkungen erm?glicht. 3. Die Farbauswahl sollte mit dem Gesamtstil koordiniert werden, um abrupte abrupt zu werden. 4. Das mobile Terminal zeigt diesen Effekt m?glicherweise nicht an. Es wird empfohlen, ihn mit anderen visuellen Eingabeaufforderungen wie Icon -Auxiliary -Logos zu kombinieren.

ThecsspaintingapienablesDynamicimageGenerationIncsSusingjavaScript.1.DevelopersCreateApaintworkletClassClasswithapaint () Methode.2.TheyRegisteritviaRegisterPaint (). 3.TheCustonTfunctionDenusedincsincssproperties ?hnlich von Background-Image.ThisallowsfordyNamicvis

Um reaktionsschnelle Bilder mit CSS zu erstellen, kann es haupts?chlich durch die folgenden Methoden erreicht werden: 1. Verwenden Sie maximale Breite: 100% und H?he: Auto, damit das Bild an die Containerbreite anpasst und gleichzeitig den Anteil beibeh?lt. 2. Verwenden Sie die SRCSet- und Gr??enattribute von HTML, um die an verschiedenen Bildschirme angepassten Bildquellen intelligent zu laden. 3.. Verwenden Sie Objektfit und Objektposition, um die Bildaufbindung und Fokusanzeige zu steuern. Gemeinsam stellen diese Methoden sicher, dass die Bilder auf verschiedenen Ger?ten klar und wundersch?n pr?sentiert werden.

Verschiedene Browser weisen Unterschiede in der CSS -Analyse auf, was zu inkonsistenten Anzeigeeffekten führt, haupts?chlich die Differenzentscheidung, die Berechnung des Boxmodells, die Flexbox- und Raster -Layout -Unterstützung und das inkonsistente Verhalten bestimmter CSS -Attribute. 1. Die Standardstilverarbeitung ist inkonsistent. Die L?sung besteht darin, CSSReset oder Normalize.css zu verwenden, um den anf?nglichen Stil zu vereinen. 2. Die Box -Modellberechnung der alten Version von IE ist unterschiedlich. Es wird empfohlen, eine einheitliche Boxgr??e: Border-Box zu verwenden. 3. Flexbox und Grid führen in Kantenf?llen oder in alten Versionen unterschiedlich ab. Weitere Tests und verwenden Sie Autoprefixer; 4. Einige CSS -Attributverhalten sind inkonsistent. Caniuse muss konsultiert und herabgestuft werden.
