Vue implementiert dreidimensionales Säulendiagramm basierend auf E-Charts

Vue implementiert dreidimensionales Säulendiagramm basierend auf E-Charts

Das dreidimensionale Säulendiagramm besteht aus drei Teilen: vorne, rechts und oben. Beim Zeichnen müssen Sie die Vorderseite als Grafik, die rechte und die obere als Grafik zeichnen, sie dann in echats registrieren und in renderItem in der Optionsreihe rendern

Der Code lautet wie folgt:

(1) Registrieren und Zeichnen von Grafiken

Registrierung () {
      let MyCubeRect = this.$echarts.graphic.extendShape({
        Form:
          x: 0,
          y: 0,
          Breite: 20,
          zBreite: 8,
          zHöhe: 4
        },
        BuildPath: Funktion (ctx, Form) {
          const api = shape.api
          const xAxisPoint = api.coord([shape.xValue, 0])
          const p0 = [Form.x, Form.y]
          const p1 = [Form.x - Form.Breite / 2, Form.y]
          const p4 = [Form.x + Form.Breite / 2, Form.y]
          const p2 = [Form.x - Form.Breite / 2, xAchsenpunkt[1]]
          const p3 = [Form.x + Form.Breite / 2, xAchsenpunkt[1]]

          ctx.moveTo(p0[0], p0[1])
          ctx.lineTo(p1[0], p1[1])
          ctx.lineTo(p2[0], p2[1])
          ctx.lineTo(p3[0], p3[1])
          ctx.lineTo(p4[0], p4[1])
          ctx.lineTo(p0[0], p0[1])
          ctx.closePath()
        }
      })
      lass MyCubeShadow = this.$echarts.graphic.extendShape({
        Form:
          x: 0,
          y: 0,
          Breite: 20,
          zBreite: 8,
          zHöhe: 4
        },
        BuildPath: Funktion (ctx, Form) {
          const api = shape.api
          const xAxisPoint = api.coord([shape.xValue, 0])
          const p1 = [Form.x - Form.Breite / 2, Form.y]
          const p4 = [Form.x + Form.Breite / 2, Form.y]
          const p6 = [Form.x + Form.Breite / 2 + Form.zBreite, Form.y - Form.zHöhe]
          const p7 = [Form.x - Form.Breite / 2 + Form.zBreite, Form.y - Form.zHöhe]
          const p3 = [Form.x + Form.Breite / 2, xAchsenpunkt[1]]
          const p5 = [shape.x + shape.width / 2 + shape.zWidth, xAxisPoint[1] - shape.zHeight]

          ctx.moveTo(p4[0], p4[1])
          ctx.lineTo(p3[0], p3[1])
          ctx.lineTo(p5[0], p5[1])
          ctx.lineTo(p6[0], p6[1])
          ctx.lineTo(p4[0], p4[1])

          ctx.moveTo(p4[0], p4[1])
          ctx.lineTo(p6[0], p6[1])
          ctx.lineTo(p7[0], p7[1])
          ctx.lineTo(p1[0], p1[1])
          ctx.lineTo(p4[0], p4[1])
          ctx.closePath()
        }
      })
      dies.$echarts.graphic.registerShape('MyCubeRect', MyCubeRect)
      dies.$echarts.graphic.registerShape('MyCubeShadow', MyCubeShadow)
    }

(2) Rendern von Grafiken

Balkendiagrammoption: {
        Tooltip: {
          Auslöser: 'Achse',
          Achsenzeiger:
            Typ: 'Kreuz',
            Etikett: {
              Hintergrundfarbe: '#6a7985'
            }
          }
        },
        Netz: {
          containLabel: wahr,
          oben: '30px',
          unten: '0px',
          links: '0px'
        },
        x-Achse:
          Typ: "Kategorie",
          Achsenbezeichnung: {
            Intervall: 0,
            Schriftgröße: Schriftgröße(12)
          },
          Achsenlinie: {
            anzeigen: falsch,
            Linienstil:
              Farbe: '#98b9c5'
            }
          },
          data: [] // Daten, die über das Backend js übergeben werden},
        yAchse: {
          Typ: "Wert",
          Achsenbezeichnung: {
            Schriftgröße: Schriftgröße(12)
          },
          Achsenlinie: {
            anzeigen: falsch,
            Linienstil:
              Farbe: '#98b9c5'
            }
          },
          geteilte Zeile: {
            Linienstil:
              Farbe: '#3a586a',
              Typ: ‚gestrichelt‘
            }
          }
        },
        Serie: [{
          Name: 'Energieverbrauch pro Flächeneinheit',
          Typ: "benutzerdefiniert",
          renderItem: (params, api) => {
            let Standort = api.Koordinate([api.Wert(0), api.Wert(1)])
            zurückkehren {
              Typ: "Gruppe",
              Kinder: [{
                Typ: "MyCubeRect",
                Form:
                  API,
                  xWert: api.value(0) - 0,5,
                  yWert: api.value(1),
                  x: Standort[0],
                  y: Standort[1]
                },
                Stil: api.style()
              },
              {
                Typ: 'MyCubeShadow',
                Form:
                  API,
                  xWert: api.value(0) - 0,5,
                  yWert: api.value(1),
                  x: Standort[0],
                  y: Standort[1]
                },
                Stil: {
                  füllen: api.style(),
                  text: ''
                }
              }]
            }
          },
          Stapel: 'Energieverbrauch pro Flächeneinheit',
          Etikett: {
            zeigen: wahr,
            Position: 'oben',
            Formatierer: "{c}",
            Textstil: {
              Schriftgröße: Schriftgröße(12),
              Farbe: '#fff',
              ausrichten: "zentriert"
            }
          },
          Artikelstil: {
            Farbe: neu dies.$echarts.graphic.LinearGradient(
              0, 0, 0, 1,
              [
                { Offset: 0, Farbe: '#b1950d' },
                { Offset: 0,5, Farbe: '#aea20d' },
                { Offset: 1, Farbe: '#a5aa12' }
              ]
            )
          },
          data: [] //Vom Backend übergebene Daten}]
      }

Notiz:

1) Beim Registrieren von Grafiken, Stil: nur Stil kann verwendet werden: api.style();
Text: ''Sie können später das Label verwenden, um den Wert über dem Diagramm zu platzieren
2) this.$echarts wird einheitlich verpackt und die spezifische Situation muss speziell berücksichtigt werden.
3) Grafiken generieren

generateBarChart() {
      lass vm = dies
      if (this.$refs['uintEnergyConsume']) { //this.$refs ist der Referenzwert des generierten Grafikbereichs this.$echarts.graphic.registerShape('MyCubeRect', this.MyCubeRect)
        dies.$echarts.graphic.registerShape('MyCubeShadow', dies.MyCubeShadow)
        dies.barChart = dies.$echarts.init(dies.$refs['uintEnergyConsume'])
        this.barChart.setOption(this.barChartOption, falsch, wahr)
        $(window).resize(function () { //Bildschirmanpassung vm.handleResize()
        })
      }
    }

(4) Code im Template

<div ref="uintEnergyConsume" id="uintEnergyConsume" Klasse="Chart-Container" 
 style="width: 100%;" element-loading-text="Wird geladen..."></div>
</div>

(5) Die Wirkungen sind wie folgt:

Referenzgrafik-URL: Vue verwendet Echarts, um ein dreidimensionales Balkendiagramm zu implementieren

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 Echarts implementiert Säulendiagramm mit Scroll-Effekt
  • Vue+echarts realisiert 3D-Säulendiagramm
  • Vue verwendet E-Charts, um ein Beispiel für ein horizontales Säulendiagramm zu implementieren
  • Implementieren eines einfachen Säulendiagramms mit D3.js+Vue
  • Vue verwendet Echarts, um ein dreidimensionales Balkendiagramm zu implementieren
  • Vue echarts realisiert horizontales Balkendiagramm
  • Vue echarts realisiert die dynamische Anzeige von Balkendiagrammen
  • Vue+echarts realisiert gestapelte Balkendiagramme
  • So verwenden Sie Balkendiagramme in Vue und ändern die Konfiguration selbst
  • Vue verwendet Echarts, um ein dreidimensionales Säulendiagramm zu implementieren

<<:  Remote-Bereitstellung von Maven-Projekten && So konfigurieren Sie eine Datenbankverbindung mit Tomcat

>>:  MySQL 8.0.20 Installations- und Konfigurations-Tutorial unter Docker

Artikel empfehlen

So finden und löschen Sie doppelte Zeilen in MySQL

Inhaltsverzeichnis 1. So finden Sie doppelte Zeil...

Detaillierte Erklärung verschiedener Bildformate wie JPG, GIF und PNG

Jeder weiß, dass Bilder auf Webseiten im Allgemein...

Detaillierte Erläuterung der JS ES6-Codierungsstandards

Inhaltsverzeichnis 1. Umfang des Blocks 1.1. let ...

Detaillierte Analyse des HTTP-Statuscodes 502 des Dienstes nginx+php-fpm

Bei einem unserer Webprojekte ist aufgrund der Zu...

So funktionieren React Hooks

Inhaltsverzeichnis 1. React Hooks vs. reine Funkt...

Zusammenfassung neuer Anwendungsbeispiele für Calculated in Vue3

Die Verwendung von „Computed“ in vue3. Da vue3 mi...

Linux CentOS6.5 yum installiere mysql5.6

In diesem Artikel wird der einfache Prozess der I...

Ausführliche Erläuterung der gespeicherten MySQL-Prozeduren (in, out, inout)

1. Einleitung Es wird seit Version 5.0 unterstütz...

Schritte zur VSCode-Konfiguration mit der Git-Methode

Git ist in vscode integriert und viele Vorgänge k...

Detaillierte Erklärung der Bedeutung von N und M im MySQL-Datentyp DECIMAL(N,M)

Ein Kollege fragte mich, was N und M im MySQL-Dat...