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

Detaillierte Erläuterung des MySQL MVCC-Mechanismusprinzips

Inhaltsverzeichnis Was ist MVCC Mysql-Sperre und ...

Informationen zur Installation von Homebrew auf dem Mac

Vor kurzem hat Xiao Ming einen neuen Mac gekauft ...

Spezifische Verwendung der Schnittstelle wx.getUserProfile im Applet

Kürzlich hat das WeChat Mini-Programm Anpassungen...

Detaillierte Installationshistorie von Ubuntu 20.04 LTS

In diesem Artikel wird die Erstellung einer USB-S...

JavaScript Canvas realisiert farbenfrohen Sonnenhalo-Effekt

In diesem Artikelbeispiel wird der spezifische Co...

MySQL Order By-Codebeispiel für Sortierregeln für mehrere Felder

Sag es im Voraus Aus einer Laune heraus möchte ic...

Ausführliche Erläuterung der HTML-Grundlagen (Teil 1)

1. Das WEB verstehen Webseiten bestehen hauptsäch...

Eine vorläufige Studie zu JSBridge in Javascript

Inhaltsverzeichnis Der Ursprung von JSBridge Das ...

So aktivieren Sie die JMX-Überwachung über Tomcat

Erstellen Sie eine Simulationsumgebung: Betriebss...

MySQL-Paket für Abfrage ist zu groß – Problem und Lösung

Problembeschreibung: Fehlermeldung: Ursache: com....

Eine kurze Analyse der Verwendung des HTML-Webpack-Plugins

Wenn Sie zum Starten der Seite das Plugin „html-w...