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

Der Unterschied und die Verwendung von Datum/Uhrzeit und Zeitstempel in MySQL

1. Wie wird die aktuelle Uhrzeit in MySQL dargest...

Ein praktischer Bericht über die Wiederherstellung einer MySQL Slave-Bibliothek

Beschreibung der Situation: Heute habe ich mich b...

Der Unterschied zwischen useEffect und useLayoutEffect in React

Inhaltsverzeichnis Voraussetzungen Effekt verwend...

CentOS7-Installations-Tutorial für Zabbix 4.0 (Abbildung und Text)

Deaktivieren Sie SeLinux setenforce 0 Dauerhaft g...

Tutorial zur Installation und Konfiguration von VMware Tools für Ubuntu

Vor einiger Zeit hat der Blogger das Ubuntu-Syste...

Analyse der Implementierungsschritte für die Docker-Containerverbindung

Im Allgemeinen verwenden wir nach dem Start des C...

Kreativer Eröffnungseffekt durch die Kombination von CSS 3.0 mit Video

Ich möchte Ihnen einen kreativen Einstieg vorstel...

Grafisches Tutorial zum Konfigurieren eines Protokollservers unter Linux

Vorwort Dieser Artikel stellt hauptsächlich die r...

Tutorial zur Installation von MySQL 8.0.11 unter Linux

1. Gehen Sie zur offiziellen Website, um das Inst...

MySQL-Primärschlüssel-Benennungsstrategie im Zusammenhang

Als ich kürzlich die Details der Datenlebenszyklu...

So sichern Sie MySQL unter Linux automatisch remote

Vorwort: Ganz gleich, ob wir es für den Eigengebr...

Praxis der Vue Global Custom-Anweisung Modal Drag

Inhaltsverzeichnis Hintergrund Umsetzungsideen Er...