Vue verwendet Echarts, um ein dreidimensionales Balkendiagramm zu implementieren

Vue verwendet Echarts, um ein dreidimensionales Balkendiagramm zu implementieren

In diesem Artikel wird der spezifische Code von Vue mit Echarts zur Implementierung eines dreidimensionalen Balkendiagramms zu Ihrer Information bereitgestellt. Der spezifische Inhalt ist wie folgt

Vorschau:

Code:

Seitenabschnitte:

<Vorlage>
  <div Klasse="roadnum-all" ref="roadnumall">
    <div id="roadnum" ref="dom"></div>
  </div>
</Vorlage>

CSS-Teil:

.roadnum-alle {
  Breite: 100 %;
  Höhe: 100 %; /*Den übergeordneten Container füllen*/
}

JS-Teil:

Echarts von „echarts“ importieren // Echarts importieren

Standard exportieren {
  Name: "ltzzt",
  Daten() {
    zurückkehren {
      Daten: [],
      dom: null
    }
  },
  montiert() {
    this.$nextTick(() => { // Geben Sie dem Symbol Breite und Höhe an, sodass es den Container ausfüllt document.getElementById('roadnum').style.width = this.$refs.roadnumall.offsetWidth + 'px';
      document.getElementById('roadnum').style.height = this.$refs.roadnumall.offsetHeight + 'px';
      dies.zeichnen();
    })
  },
  Methoden: {
    // Ziehen() {
      // Netzwerkanfrage gibt vor, Daten vom Backend abzurufen this.data = [
        { Name: '京哈高速', Wert: 10 },
        { Name: 'Name des Benutzers 1', Wert: 20 },
        { Name: 'Anzahl der Zeichen 2', Wert: 30 },
        { Name: 'Name des Spielers 3', Wert: 40 },
        { Name: 'Anzahl der Zeichen 4', Wert: 50 },
        { Name: 'Anzahl der Zeichen 5', Wert: 60 },
        { Name: 'Name des Spielers 6', Wert: 70 },
        { Name: 'Name des Spielers 7', Wert: 80 },
        { Name: 'Name des Spielers 8', Wert: 90 },
        { Name: 'Name des Spielers 9', Wert: 100 },
        { Name: '0 ...
        { Name: 'Name des Spielers 11', Wert: 120 }
      ];
      // Array der Achsenanzeige und Daten let xAxisText = [];
      Lassen Sie Datenliste = [];
      diese.data.forEach(item => {
        xAxisText.push(Elementname);
        Datenliste.push(Element.Wert)
      })
      // Beginnen Sie hier mit der Erstellung benutzerdefinierter Grafiken - der Vorderseite des Quaders var MyCubeRect = echarts.graphic.extendShape({
        Form:
          x: 0,
          y: 0,
          width: 180, // Breite des Quaders zWidth: 8, // Breite der Schattenecke zHeight: 4 // Höhe der Schattenecke },
        BuildPath: Funktion (ctx, Form) {
          console.log(ctx, Form);
          const api = form.api;
          const xAxisPoint = api.coord([shape.xValue, 0]);
          const p0 = [Form.x, Form.y];
          const p1 = [Form.x - Form.Breite / xAchsenText.Länge, Form.y];
          const p4 = [Form.x + Form.Breite / xAxisText.Länge, Form.y];
          const p2 = [xAxisPoint[0] - shape.width / xAxisText.length, xAxisPoint[1]];
          const p3 = [xAxisPoint[0] + shape.width / xAxisText.length, xAxisPoint[1]];

          ctx.moveTo(p0[0], p0[1]); //0
          ctx.lineTo(p1[0], p1[1]); //1
          ctx.lineTo(p2[0], p2[1]); //2
          ctx.lineTo(p3[0], p3[1]); //3
          ctx.lineTo(p4[0], p4[1]); //4
          ctx.lineTo(p0[0], p0[1]); //0
          ctx.closePath();
        }
      })

      // Erstellen Sie die zweite benutzerdefinierte Form – die Oberseite und die Seite des Quaders var MyCubeShadow = echarts.graphic.extendShape({
        Form:
          x: 0,
          y: 0,
          Breite: 180,
          zBreite: 8,
          zHöhe: 4
        },
        BuildPath: Funktion (ctx, Form) {
          const api = form.api;
          const xAxisPoint = api.coord([shape.xValue, 0]);
          const p0 = [Form.x, Form.y];
          const p1 = [Form.x - Form.Breite / xAchsenText.Länge, Form.y];
          const p4 = [Form.x + Form.Breite / xAxisText.Länge, Form.y];
          const p6 = [Form.x + Form.Breite / xAchsenText.Länge + Form.zBreite, Form.y - Form.zHöhe];
          const p7 = [Form.x - Form.Breite / xAchsenText.Länge + Form.zBreite, Form.y - Form.zHöhe];
          const p3 = [xAxisPoint[0] + shape.width / xAxisText.length, xAxisPoint[1]];
          const p5 = [xAchsenpunkt[0] + Form.Breite / xAchsentext.Länge + Form.zBreite, xAchsenpunkt[1] - Form.zHöhe];

          ctx.moveTo(p4[0], p4[1]); //4
          ctx.lineTo(p3[0], p3[1]); //3
          ctx.lineTo(p5[0], p5[1]); //5
          ctx.lineTo(p6[0], p6[1]); //6
          ctx.lineTo(p4[0], p4[1]); //4

          ctx.moveTo(p4[0], p4[1]); //4
          ctx.lineTo(p6[0], p6[1]); //6
          ctx.lineTo(p7[0], p7[1]); //7
          ctx.lineTo(p1[0], p1[1]); //1
          ctx.lineTo(p4[0], p4[1]); //4
          ctx.closePath();
        }
      });
      echarts.graphic.registerShape('MeinCubeRect', MeinCubeRect);
      echarts.graphic.registerShape('MeinCubeShadow', MeinCubeShadow);
      const option = {
        Farbe: ['#33b56a', '#fdcf5c', '#4c90ff', '#fe7b7a', '#69ccf6', '#a38bf8', '#ff9561', '#8cb0ea', '#fe81b4', '#ffb258'],
        Titel:
          Text: 'Überprüfung der Routenbewertung',
          links: 20,
          oben: 20
        },
        Legende: {
          zeigen: wahr,
          oben: 25
        },
        Netz: {
          links: '3%',
          rechts: '4%',
          oben: '15%',
          unten: '3%',
          containLabel: wahr
        },
        x-Achse:
          Typ: "Kategorie",
          Daten: xAxisText,
          boundageGap: wahr,
          Intervall: 0,
          Achsenbezeichnung: {
            Farbe: '#333',
            // Setzen Sie das vertikale Intervall für die Textrichtung der X-Achse auf 0,
            Formatierer: Funktion (Wert) {
              Rückgabewert.split('').join('\n')
            }
          }
        },
        yAchse: {
          Typ: "Wert"
        },
        Tooltip: {
          Auslöser: 'Achse',
          Achsenzeiger:
            Typ: "Schatten"
          },
        },
        Serie: [{
          Name: 'Anzahl der Male',
          Typ: "benutzerdefiniert",
          renderItem: (params, api) => {
            let location = api.coord([api.value(0), api.value(1)]);
            zurückkehren {
              Typ: "Gruppe",
              Kinder: [{
                Typ: "MyCubeRect",
                Form:
                  API,
                  xWert: api.Wert(0),
                  yWert: api.value(1),
                  x: Standort[0],
                  y: Standort[1]
                },
                style: api.style(), // api.style() – erbt den ursprünglichen Stil}, {
                Typ: 'MyCubeShadow',
                Form:
                  API,
                  xWert: api.Wert(0),
                  yWert: api.value(1),
                  x: Standort[0],
                  y: Standort[1]
                },
                Stil: {
                  füllen: api.style(),
                  Text: '' // Den ursprünglichen Stil übernehmen und die Beschriftung löschen. Wenn sie nicht gelöscht wird, werden im generierten Diagramm zwei überlappende Beschriftungen angezeigt.
                }
              }]
            }
          },
          Stapel: 'Gesamtbetrag',
          Etikett: {
            zeigen: wahr,
            Position: 'oben',
            Farbe: '#333',
            Formatierer: `{c} mal`,
            Schriftgröße: 16,
            Entfernung: 15
          },
          Artikelstil: {
            normal: {
              Farbe: (Parameter) => {
                // Jede Spalte anders färben let colorList = ['#33b56a', '#fdcf5c', '#4c90ff', '#fe7b7a', '#69ccf6', '#a38bf8', '#ff9561', '#8cb0ea', '#fe81b4', '#ffb258'];
                wenn (params.dataIndex + 1 <= Farbliste.Länge) {
                  Farbliste zurückgeben[params.dataIndex]
                } anders {
                  // Wenn die Anzahl der Spalten das Farbarray überschreitet, beginnen Sie erneut. return colorList[params.dataIndex - colorList.length]
                }
              }
            }
          },
          Daten: Datenliste
        }]
      };
      dies.dom = echarts.init(dies.$refs.dom);
      this.dom.setOption(Option, true)
      window.addEventListener("Größe ändern", () => {
        wenn (document.getElementById('roadnum') und dies.$refs.roadnumall) {
          document.getElementById('roadnum').removeAttribute('_echarts_instance_');
          document.getElementById('roadnum').style.width = this.$refs.roadnumall.offsetWidth + 'px';
          document.getElementById('roadnum').style.height = this.$refs.roadnumall.offsetHeight + 'px';
          dies.dom.resize();
        }
      });
    }
  }
}

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Vue + Echart realisiert dreidimensionales Säulendiagramm
  • Vue verwendet das Echart-Symbol-Plug-In-Balkendiagramm
  • Detaillierte Erklärung von vue mit Echarts zum Zeichnen eines Balkendiagramms
  • Das Balkendiagramm von Vue + Echart realisiert Statistiken zu Epidemiedaten
  • Vue echarts realisiert horizontales Balkendiagramm
  • Vue + echart realisiert Doppelsäulendiagramm
  • Vue implementiert horizontal abgeschrägtes Balkendiagramm
  • Vue+echarts realisiert gestapelte Balkendiagramme
  • Vue+echarts realisiert Fortschrittsbalken-Histogramm
  • Vue+ Antv F2 realisiert gestapeltes Balkendiagramm

<<:  MySQL 8.0.20 Installations- und Konfigurations-Tutorial unter Win10

>>:  Grafisches Tutorial zur Installation und Konfiguration von MySQL 8.0.20 winx64

Artikel empfehlen

MySQL zeigt ein einfaches Operationsbeispiel

Dieser Artikel beschreibt den MySQL-Show-Vorgang ...

Zusammenfassung der HOC-Nutzung von React-High-Order-Komponenten

Ein Satz zur Einführung von HOC Was ist eine Komp...

Detaillierte Erklärung zur Verwendung von JavaScript WeakMap

Ein WeakMap-Objekt ist eine Sammlung von Schlüsse...

Unterschiede zwischen MySQL CHAR und VARCHAR beim Speichern und Lesen

Einführung Kennen Sie wirklich den Unterschied zw...

JavaScript-Grundlagenvariablen

Inhaltsverzeichnis 1. Variablenübersicht 1.1 Spei...

Zusammenfassung von fünf Befehlen zum Überprüfen des Swap-Speichers in Linux

Vorwort Unter Linux können zwei Arten von Swap-Sp...

HTML-Tabellen-Tag-Tutorial (44): Tabellenkopfzeilen-Tag

<br />Um die Tabellenstruktur im Quellcode d...

JavaScript implementiert eine einzelne verknüpfte Listenprozessanalyse

Vorwort: Zum Speichern mehrerer Elemente sind Arr...

Spezifische Verwendung von useRef in React

Ich glaube, dass Leute, die Erfahrung mit React h...

Implementierung der Docker-Container-Statuskonvertierung

Ein Zustandsübergangsdiagramm eines Docker-Contai...

Detaillierte Erklärung des Parameters slave_exec_mode in MySQL

Heute habe ich zufällig den Parameter slave_exec_...

Der einfachste Weg zum Debuggen gespeicherter Prozeduren in MySQL

Ein Kollege hat mir einmal gesagt, ich solle eine...

Analyse der problematischen „Aborted“-Warnung in MySQL anhand von Fallstudien

Dieser Artikel stellt hauptsächlich den relevante...