No.3ベストアンサー
- 回答日時:
html5ならcanvasが使えるのでは?
扇形を作るものを用意しておけば、それで事足りそう。
html5もcanvasも使ったことはありませんが、お勉強のためにサンプルを。
参考にしたサイト
https://developer.mozilla.org/ja/Canvas_tutorial
fx6.0でしか確認していません。
数値の意味が不明でしたので、角度などは適当です。
(全角空白は半角に)
<!DOCTYPE html>
<html lang="ja">
<head>
<title>sample</title>
</head>
<body>
<canvas id="graph" width="400" height="400"></canvas>
<script type="text/javascript">
(function(){
var fanShape = (function(rad){
return function(ctx, r, ang1, ang2, col, frame){
ctx.fillStyle = col;
ctx.beginPath();
ctx.moveTo(0, 0);
ctx.arc(0, 0, r, rad(ang1), rad(ang2));
ctx.fill();
if(frame){
ctx.closePath();
ctx.stroke();
}
}
})(function(a){
return Math.PI*(a-90)/180;
});
var context, graph = document.getElementById("graph");
if(graph.getContext && (context = graph.getContext("2d"))){
context.translate(200, 200);
fanShape(context, 180, 0, 360, "#ddd");
fanShape(context, 160, 0, 10, "#0c0", true);
fanShape(context, 90, 10, 240, "#c00", true);
fanShape(context, 60, 240, 360, "#00c", true);
}
})();
</script>
</body>
</html>
ご回答ありがとうございます。正常に動きました!
コードも非常に簡潔でしたので、取り入れてみたいと思ってます!ちなみにNo2さんのほうにも記載させて頂きましたが、
http://elycharts.com/examples#example_p1
こうしたサンプルのように、ひとつひとつの扇形に対してアニメーションもつけたいんです。。
また、ひとつひとつの扇形をオフジェクトとして取り出して、クリックしたらajaxを使って該当データを引っ張ってきて、ツールチップに表示、こうしたことをやっていきたいとおもっているんですね。
どうかfujillin様からも知識をご教授頂けないでしょうか?
No.2
- 回答日時:
うごくだろうか?
<!DOCTYPE html>
<html lang="ja">
<title>Test</title>
<meta charset="utf-8">
<body>
<canvas id="HOGE" width="800" height="400">
canvas による描画
</canvas>
<script>
var dt = [
{ value: 512, radius: 90, color: '#080', caption: 'A' },
{ value: 6534, radius: 30, color: '#f00', caption: 'B' },
{ value: 3056, radius: 20, color: '#008', caption: 'C' }
];
var canvas = document.getElementById ('HOGE');
var op = {
ctrx: canvas.getContext ('2d'),
x: canvas.offsetWidth / 2 |0,
y: canvas.offsetHeight / 2 |0,
r: 180
};
var total = dt.reduce (function (rst, obj) { return rst + obj.value; }, 0);
var drawArc = function () {
var square = -90;
var sin = Math.sin;
var cos = Math.cos;
var deg = Math.PI / 180;
return function (obj) {
var ctrx = this.ctrx;
var square2 = square + (360 / 100) * obj.rate * 100;
ctrx.fillStyle = obj.color;
ctrx.strokeStyle = 'black';
ctrx.beginPath ();
ctrx.moveTo (this.x, this.y);
ctrx.arc (this.x, this.y, obj.radius * this.r / 100 |0, square * deg, square2 * deg, false);
ctrx.lineTo (this.x, this.y);
ctrx.closePath ();
ctrx.fill ();
ctrx.stroke ();
square = square2;
};
} ();
var drawCaption = function () {
var offsetX = 10;
var offsetY = 8;
var color = 'white';
var font = "18px 'MS Pゴシック'";
return function (obj) {
var y = this.y - this.r * obj.radius / 100;
this.ctrx.fillStyle = color;
this.ctrx.font = font;
this.ctrx.fillText (obj.caption, this.x + offsetX, y + offsetY);
};
} ();
op.ctrx.arc (op.x, op.y, op.r, 0, 360, false);
op.ctrx.fillStyle = 'silver';
op.ctrx.fill ();
dt.forEach (function (obj) { obj.rate = obj.value / this; }, total);
dt.forEach (drawArc, op);
dt.forEach (drawCaption, op);
</script>
babu_babooさん、以前もご回答頂きありがとうございます。
動作の方確認しまして、正常に動きました。どうもご丁寧にありがとうございます。
ちなみに
http://elycharts.com/examples#example_p1
こうしたサンプルのように、ひとつひとつの扇形に対してアニメーションもつけたいんです。。
また、ひとつひとつの扇形をオフジェクトとして取り出して、クリックしたらajaxを使って該当データを引っ張ってきて、ツールチップに表示、こうしたことをやっていきたいとおもっているんです。
知識をご教授頂けないでしょうか?
No.1
- 回答日時:
HTML5 だから SVG 前提で書くけど、
質問の添付の円グラフは、『円弧と終始点から中心への直線で囲まれた図形』の組み合わせだから、path 要素の円弧を描くためのコマンド A(絶対座標)/a(相対座標)を使えばいいとおもうよ。
Raphaël Reference
Paper.path([pathString])
http://raphaeljs.com/reference.html#Paper.path
SVG 1.1 勧告 日本語版
8.3.8 楕円弧曲線命令
http://www.hcn.zaq.ne.jp/___/REC-SVG11-20030114/ …
path の記述のポイントとしては、
1) 中心から弧の始点へ直線を引いて
2) A か a コマンドで弧を描いて
3) z コマンドでパスを閉じる
中心を (0,0) に固定しちゃえば、必要な座標は、弧の始点と終点だけだから、数学の教科書引っぱり出して計算方法を確認してみて!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) <スプレッドシート>採用進捗 グラフ作成について 3 2022/10/23 15:52
- Excel(エクセル) Excelの複合グラフ(棒グラフと折れ線グラフ)で各棒グラフに名称を表示させたい 1 2022/08/14 23:26
- 数学 効用関数と直線:なぜ直線になる? 3 2022/06/04 20:39
- Excel(エクセル) EXCELのグラフを画像(JPG形式)で保存、通常実行がうまく行かない。ステップインはうまく行く 3 2022/08/30 12:06
- 数学 写真の(1)の問題についてですが、解説を見るとグラフを使って示しているのですが、解説の文章はグラフを 1 2023/02/09 17:48
- 計算機科学 エクセルのデータの表すことについて 2 2023/03/05 20:49
- Word(ワード) 数値に差のあるデータを分かりやすく比較する方法について。医療現場におけるヒヤリハットの発生件数を事例 3 2022/07/18 14:24
- 数学 高校数学で質問があります。 2 2023/02/13 15:49
- Excel(エクセル) エクセルの大きなシートでグラフを見つける 4 2022/07/28 10:07
- 数学 絶対値の入った一次方程式とグラフ 添付の問題、解答ではグラフを描いて 解いていました。 私はaを場合 2 2022/10/26 17:23
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
jQueryのload()を使用して外部...
-
google apps scriptの終了のさせ方
-
C#OpenCv V4にのエラーに関する...
-
Javaで避けるゲームを作ってい...
-
【JavaScript】数当てゲームを...
-
C#で、ContextMenuStripに動的...
-
javaScript textareaの一行あた...
-
翌月を取得するGASが分かりません
-
ASP.NETのコントロールの値をJa...
-
javascriptにお詳しい方に質問...
-
商品コードを入力で、商品名、...
-
JavaScriptで決まった「時刻」...
-
ホームページの最終更新日を他...
-
C# 演算 奇数と偶数 表現の仕方
-
特定のclassを表示、非表示にする
-
なぜmatchメソッドがエラーにな...
-
javascriptでカウントダウンタ...
-
ASP.NET MVCでObjectをjsに渡す
-
idを使わずにonclickで自身の要...
-
Linux バイナリ実行できない "...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
google apps scriptの終了のさせ方
-
C#OpenCv V4にのエラーに関する...
-
メールフォームの日付入力フォ...
-
GASでundefinedエラーが出ます
-
ジェネレーターの作り方
-
GASでGoogleフォームの自動返信...
-
なぜmatchメソッドがエラーにな...
-
翌月を取得するGASが分かりません
-
ローカルにあるファイルを検索...
-
HTMLで作った時報アプリが動き...
-
ASP.NETのコントロールの値をJa...
-
C# 演算 奇数と偶数 表現の仕方
-
html javascript リンク先アド...
-
gas スプレッドシートがアクテ...
-
javascriptでテーブルに追加し...
-
VSCODE[Python]の設定について
-
JavaScriptで決まった「時刻」...
-
ASP.NET MVCでObjectをjsに渡す
-
イベントが初めの一回しか起き...
-
jqGridについて
おすすめ情報