JavaScript-Kreisdiagrammbeispiel

JavaScript-Kreisdiagrammbeispiel

Zeicheneffekte

Implementierungscode

JavaScript

var canvas = document.getElementById("mycanvas");
var w = Fenster.innereBreite;
var h = Fenster.innereHöhe;
Leinwandhöhe = 1000;
Leinwandbreite = 1400;
var ctx = canvas.getContext('2d');

var poppable = true;

var Scheiben = [];

Funktion ShadeColor(Farbe, Prozent) {
 var f = parseInt(color.slice(1), 16),
  t = Prozent < 0 ? 0 : 255,
  p = Prozent < 0 ? Prozent * -1 : Prozent,
  R = f >> 16,
  G = f >> 8 & 0x00FF,
  B = f & 0x0000FF;
 gibt "#" zurück + (0x1000000 + (Math.round((t - R) * p) + R) * 0x10000 + (Math.round((t - G) * p) + G) * 0x100 + (Math.round((t - B) * p) + B)).toString(16).slice(1);
}

Funktion pieSlice(oX, oY, r, pos, len, col, data) {
 this.data = Daten
 dies.originX = oX;
 dies.originY = oY;
 dieser.radius = r;
 dies.startingRadian = pos;
 diese.Länge = Länge;
 diese.Farbe = Spalte;
 diese.hervorgehobeneFarbe = FarbtonFarbe(diese.Farbe, .6);
 dies.hervorgehoben = falsch;
 dies.popped = falsch;
 dieses.animationFrame = 0;

 Funktion setzeFarbe(c) {
  diese.farbe = c;
 }
}

pieSlice.prototype.displayData = Funktion(){
 ctx.fillStyle = diese.Farbe;
 ctx.fillRect(dieser.originX – dieser.radius – 40, dieser.originY – dieser.radius – 35, 25, 25);
 ctx.fillStyle = "weiß";
 ctx.font = "15px Arial";
 ctx.fillText(diese.Daten, dieser.UrsprungX – dieser.Radius – 10, dieser.UrsprungY – dieser.Radius – 18);
}

pieSlice.prototype.render = Funktion() {
 wenn (!this.highlighted) {
  ctx.fillStyle = diese.Farbe;
  ctx.strokeStyle = diese.Farbe;
 } anders {
  wenn (!this.popped && poppable) {
   dies.displayData();
  }
  // ctx.fillStyle = diese.Farbe;
  ctx.fillStyle = diese.hervorgehobeneFarbe;
  ctx.strokeStyle = diese.Farbe;
 }
 ctx.beginPath();
 var xOffset = Math.cos(diese.Länge / 2 + dieses.Startradian) * dieses.AnimationsFrame;
 var yOffset = Math.sin(diese.Länge / 2 + dieses.Startradian) * dieses.AnimationsFrame;
 ctx.moveTo(dieser.UrsprungX + xOffset, dieser.UrsprungY + yOffset);
 var x = dieser.originX + xOffset + dieser.radius * Math.cos(dieser.startingRadian);
 var y = this.originY + yOffset + this.radius * Math.sin(this.startingRadian);
 ctx.lineTo(x, y);
 ctx.arc(dieser.UrsprungX + xOffset, dieser.UrsprungY + yOffset, dieser.Radius, dieser.Startradian, dieser.Startradian + diese.Länge);
 wenn (dies.gepoppt) {
  var füllen = ctx.fillStyle;
  dies.displayData();
  ctx.fillStyle = füllen;
  wenn (dieses.animationFrame < 30) {
   dies.animationFrame += 2;
  }
 } anders {
  wenn (dieses.animationFrame > 0) {
   dies.animationFrame -= 2;
  }
 }
 ctx.closePath();
 //ctx.stroke();
 //wenn (dies.hervorgehoben) {
 ctx.fill();
 // }
}

pieSlice.prototype.update = Funktion() {

}

Funktion Kreisdiagramm(e) {
 dies.slices = s;
}
pieChart.prototype.render = Funktion() {
 dies.slices.forEach(Funktion(p) {
  p.render();
 });
};

pieChart.prototype.update = Funktion() {
  dies.slices.forEach(Funktion(p) {
   p.update();
  });

 }
 //KUCHEN EINS
var pie = neues pieSlice(700, 170, 125, 0, Math.PI / 4, "#FFD1DC", 12);
var slice2 = neues pieSlice(700, 170, 125, Math.PI / 4, Math.PI / 4, "#08E8DE");
var slice3 = neues pieSlice(700, 170, 125, Math.PI / 2, Math.PI / 4, "#6699CC");
var slice4 = neues pieSlice(700, 170, 125, 3 * Math.PI / 4, Math.PI, "#ADD8E6");
var slice5 = neues pieSlice(700, 170, 125, 7 * Math.PI / 4, Math.PI / 4, "#B19CD9");
var slices1 = [Kuchen, Slice2, Slice3, Slice4, Slice5];

var pink = neues Kreisstück (220, 170, 125, 0, Math.PI / 3, "#FF4B4B");
var orange = neues Kreissegment (220, 170, 125, Math.PI / 3, Math.PI / 3, "#FF931B");
var gelb = neues Kreissegment (220, 170, 125, 2 * Math.PI / 3, Math.PI / 3, "#FFE21B");
var grün = neues Kreissegment (220, 170, 125, 3 * Math.PI / 3, Math.PI / 3, "#90E64E");
var blau = neues Kreissegment (220, 170, 125, 4 * Math.PI / 3, Math.PI / 3, "#6097D9");
var purple = neues Kreissegment (220, 170, 125, 5 * Math.PI / 3, Math.PI / 3, "#8365DD");

var redd = neues PieSlice(1180, 170, 125, 0, 2 * Math.PI / 3, "#B3989B");
var orangee = neues Kreissegment (1180, 170, 125, 2 * Math.PI / 3, 1 * Math.PI / 8, "#C1AEE0");
var bluee = neues PieSlice(1180, 170, 125, 19 * Math.PI / 24, 4 * Math.PI / 24, "#928CE9");
var greenn = neues Kreissegment (1180, 170, 125, 23 * Math.PI/24, 3 * Math.PI/8, "#676675");
var purplee = neues Kreissegment (1180, 170, 125, 4 * Math.PI/3, 3 * Math.PI/8, "#947D59");
var ceci = neues PieSlice(1180, 170, 125, 41 * Math.PI/24, 7*Math.PI/24, "#D994E0");

var slices3 = [rot, orange, blau, grün, lila, hellbraun];

var slices2 = [rosa, orange, gelb, grün, blau, lila];
var pie1 = neues Kreisdiagramm (Slices1);
var pie2 = neues Kreisdiagramm (Slices2);
var pie3 = neues Kreisdiagramm (Slices3);
var update = funktion() {
 pie1.update();
}
var render = Funktion() {
 ctx.clearRect(0, 0, Leinwandbreite, Leinwandhöhe);
 pie1.render();
 pie2.render();
 pie3.render();
}

var Schritt = Funktion() {
 aktualisieren();
 machen();
 animieren (Schritt);
}

var animate = window.requestAnimationFrame ||
 Fenster.webkitRequestAnimationFrame ||
 window.mozRequestAnimationFrame ||
 Funktion(Rückruf) {
  window.setTimeout(Rückruf, 1000 / 60);
 };

Scheiben.push.apply(Scheiben, Scheiben1);
Scheiben.drücken.anwenden(Scheiben, Scheiben2);
Scheiben.drücken.anwenden(Scheiben, Scheiben3);

canvas.addEventListener("Mausbewegung", Funktion(e) {
 var x = e.clientX;
 var y = e.clientY;
 slices.forEach(Funktion(slice) {
  ctx.beginPath();
  var xOffset = Math.cos(slice.length / 2 + slice.startingRadian) * slice.animationFrame;
  var yOffset = Math.sin(slice.length / 2 + slice.startingRadian) * slice.animationFrame;
  ctx.moveTo(slice.originX + xOffset, slice.originY + yOffset);
  var xx = slice.originX + xOffset + slice.radius * Math.cos(slice.startingRadian);
  var yy = slice.originY + yOffset + slice.radius * Math.sin(slice.startingRadian);
  ctx.lineTo(xx, yy);
  ctx.arc(slice.originX + xOffset, slice.originY + yOffset, slice.radius, slice.startingRadian, slice.startingRadian + slice.length);
  wenn (ctx.isPointInPath(x, y)) {
   scheibe.hervorgehoben = wahr;
   slice.displayData();
  } anders {
   scheibe.hervorgehoben = falsch;
  }
  ctx.closePath();

 });
});

canvas.addEventListener("klicken", Funktion(e) {
 var x = e.clientX;
 var y = e.clientY;
 slices.forEach(Funktion(slice) {
  ctx.beginPath();
  var xOffset = Math.cos(slice.length / 2 + slice.startingRadian) * slice.animationFrame;
  var yOffset = Math.sin(slice.length / 2 + slice.startingRadian) * slice.animationFrame;
  ctx.moveTo(slice.originX + xOffset, slice.originY + yOffset);
  var xx = slice.originX + xOffset + slice.radius * Math.cos(slice.startingRadian);
  var yy = slice.originY + yOffset + slice.radius * Math.sin(slice.startingRadian);
  ctx.lineTo(xx, yy);
  ctx.arc(slice.originX + xOffset, slice.originY + yOffset, slice.radius, slice.startingRadian, slice.startingRadian + slice.length);
  wenn (ctx.isPointInPath(x, y)) {
   wenn (slice.popped) {
    Scheibe.gepoppt = falsch;
    aufklappbar = wahr;
   } anders {
    wenn(aufklappbar){
      Scheibe.gepoppt = wahr;
     aufklappbar = falsch;
    }
   }
   scheibe.hervorgehoben = falsch;
  }
  ctx.closePath();

 });
});

//Starte die Schleife
animieren (Schritt);

html

<canvas id="mycanvas"></canvas>

Oben sind die Einzelheiten des Beispiels zum Zeichnen eines Kreisdiagramms mit JavaScript aufgeführt. Weitere Informationen zum Zeichnen eines Kreisdiagramms mit JavaScript finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Analyse der Kreisdiagramm-Implementierungsmethode der Extjs-Grafikzeichnung
  • Beispiel für die Verwendung des Baidu ECharts-Plugins zum Zeichnen eines Kreisdiagramms mit JavaScript
  • Beispiel einer JS+Canvas-Methode zum dynamischen Zeichnen von Kreisdiagrammen
  • Lesen Sie die Daten aus der Datenbank und integrieren Sie sie in ein 3D-Kreisdiagramm, um sie in JSP anzuzeigen
  • Javascript Highcharts Kreisdiagramm zeigt Menge und Prozentwert an Beispielcode
  • Ein einfaches Beispiel zum Zeichnen eines Kreisdiagramms mit html+js+highcharts
  • Kreisdiagramme mit js zeichnen
  • JavaScript-Vektordiagrammbibliothek - gRaphael Ein paar Codezeilen, um exquisite Balkendiagramme/Kreisdiagramme/Punktdiagramme/Kurvendiagramme zu erzielen
  • Kreisdiagramme ganz einfach mit JSP erstellen

<<:  Praktischer grundlegender Beispielcode für den Linux-Befehl sed

>>:  Zusammenfassung der täglichen Verwaltungsbefehle von mysqladmin unter MySQL (unbedingt lesen)

Artikel empfehlen

So stellen Sie ein SpringBoot-Projekt mit Docker bereit

Die Entwicklung der Docker-Technologie bietet ein...

So konfigurieren Sie Bash-Umgebungsvariablen in Linux

Shell ist ein in der Programmiersprache C geschri...

Javascript zum Wechseln von Bildern per Mausklick

In diesem Artikelbeispiel wird der spezifische Ja...

Detaillierte Beschreibung der Funktion von new in JS

Inhaltsverzeichnis 1. Beispiel 2. Erstelle 100 So...

So ändern Sie die Zeichensatzkodierung in MySQL 5.5/5.6 unter Linux auf UTF8

1. Melden Sie sich bei MySQL an und verwenden Sie...

MySQL-Passwort ist korrekt, aber keine lokale Anmeldung möglich -1045

MySQL-Passwort ist korrekt, aber keine lokale Anm...

JS Leicht verständliche Funktion und Konstruktor

Inhaltsverzeichnis 1. Übersicht 1.1 Erstellen ein...

Kreisförmiger Fortschrittsbalken mit CSS implementiert

Ergebnisse erzielen Implementierungscode html <...

Designtheorie: Menschenorientiertes Designkonzept

<br />Als sich das Denken in Ost und West sp...

js zur Realisierung eines einfachen Puzzlespiels

In diesem Artikel wird der spezifische Code von j...

Vue implementiert rekursiv benutzerdefinierte Baumkomponenten

In diesem Artikel wird der spezifische Code der r...

Vue realisiert einen dynamischen Fortschrittsbalkeneffekt

In diesem Artikelbeispiel wird der spezifische Co...

Was ist Flex und ein ausführliches Tutorial zur Flex-Layout-Syntax

Flexibles Layout Flex ist die Abkürzung für Flexi...