開発環境
- macOS Sierra - Apple (OS)
- Emacs (Text Editor)
- JavaScript (プログラミング言語)
- Safari、Firefox(Web browser)
Eloquent JavaScript(Marijn Haverbeke 著、No Starch Press)のPart 2(Browser)、Chapter 16(Drawing on Canvas)、Exercises(The Pie Chart)を取り組んでみる。
Exercises(The Pie Chart)
コード(Emacs)
HTML5
<canvas width="600" height="600" id="canvas0" ></canvas> <script src="sample2.js"></script>
JavaScript
'use strict';
let results = [
{name: 'Satisfied', count: 1043, color: 'lightblue'},
{name: 'Neutral', count: 563, color: 'lightgreen'},
{name: 'Unsatisfied', count: 510, color: 'pink'},
{name: 'No comment', count: 175, color: 'silver'}
];
let ctx = document.querySelector('#canvas0').getContext('2d'),
total = results.reduce((sum, choice) => sum + choice.count,
0),
currentAngle = - Math.PI / 2,
center = [300, 300],
radius = 200;
results.forEach((result) => {
let sliceAngle = (result.count / total) * 2 * Math.PI,
textAngle = currentAngle + sliceAngle / 2;
ctx.beginPath();
ctx.arc(center[0], center[1], radius,
currentAngle, currentAngle + sliceAngle);
currentAngle += sliceAngle;
ctx.lineTo(center[0], center[1]);
ctx.fillStyle = result.color;
ctx.fill();
ctx.font = '28px Georgia';
ctx.fillStyle = 'black';
ctx.textAlign = 'center';
ctx.textBaseline = 'middle';
ctx.fillText(result.name,
center[0] + radius * Math.cos(textAngle),
center[1] + radius * Math.sin(textAngle));
});
0 コメント:
コメントを投稿