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

Erklärung der Funktionsweise und Verwendung von Redux

Inhaltsverzeichnis 1. Was ist Redux? 2. Das Redux...

js Canvas realisiert zufällige Partikeleffekte

In diesem Artikelbeispiel wird der spezifische Co...

Detaillierte Erklärung, wie NGINX PV, UV und unabhängige IP der Website zählt

Nginx: PV, UV, unabhängige IP Jeder, der Websites...

Beispiele für dl-, dt- und dd-Listenbezeichnungen

Die Tags dd und dt werden für Listen verwendet. N...

So verwenden Sie xshell zum Herstellen einer Verbindung zu Linux in VMware (2 Methoden)

【Vorwort】 Ich möchte vor Kurzem das Prüfungssyste...

Einführung in den Aufbau eines DNS-Servers unter centos7

Inhaltsverzeichnis 1. Projektumgebung: 2: DNS-Ser...

Verschiedene Möglichkeiten zum Ändern der Hintergrundbildfarbe mit CSS3

CSS3 kann die Farbe von Bildern ändern. Ab sofort...

Vue führt einen einfachen zufälligen Namensaufruf durch

Inhaltsverzeichnis Layoutteil: <div id="a...

So richten Sie ein Bereitstellungsprojekt unter einem Linux-System ein

1. Ändern Sie die Firewall-Einstellungen und öffn...

Vergleich zwischen Redis und Memcache und Auswahlmöglichkeiten

Ich verwende Redis seit Kurzem und finde es recht...