🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Chart.js

Chart.jsは、多様なグラフを組み込めるJavaScriptのライブラリ。折れ線グラフや棒グラフ、円グラフ、レーダーチャートなどのグラフの種類が用意されています。HTML5のCanvasを用いて描画され、マークアップも分かりやすく、簡単に編集することが可能です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

2回答

3134閲覧

chart.jsにおいてチャートを更新し、optionsの中身を切り替えたい

退会済みユーザー

退会済みユーザー

総合スコア0

Chart.js

Chart.jsは、多様なグラフを組み込めるJavaScriptのライブラリ。折れ線グラフや棒グラフ、円グラフ、レーダーチャートなどのグラフの種類が用意されています。HTML5のCanvasを用いて描画され、マークアップも分かりやすく、簡単に編集することが可能です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

1グッド

1クリップ

投稿2019/10/30 12:33

chart.jsで円グラフを描写しました。
切り替えボタンクリックでオプションの中身を切り替えたいのですが、どのようなコードを書けば良いでしょうか?

javascript

1options: { 2 legend: { 3 display: true 4 } 5}

を削除し、

javascript

1 options: { 2 pieceLabel: { 3 render: function(d) { return d.label + ":" + d.percentage + "%" }, 4 fontColor: '#000', 5 position: 'outside', 6 segment: true 7 } 8 }

を追加したいです。

html

1<canvas id='CircleChart'</canvas> 2<script> 3var ctx = document.getElementById("CircleChart"); 4var CircleChart = new Chart(ctx, { 5 type: 'pie', 6 data: { 7 labels: ["A", "B", "C", "D", "E", "F", "G"], 8 datasets: [{ 9 data: [38, 31, 21, 10, 38, 31, 21] 10 }] 11 }, 12 options: { 13 legend: { 14 display: true 15 } 16 } 17}); 18</script>
pogin503👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

オプションを書き換える場合、思いつくのがボタンを用意して図を更新するというのがまず思いつきました。
ボタンはonclickイベントで更新処理を書きます。

<input type="button" value="Check" onclick='update(CircleChart)'>

何かしら値を書き換える場合は図の更新処理が必要になる場合と、いい感じにやってくれる場合とがあるのですがChart.jsの場合は自分で図を更新する必要があります。
調べてみるとchart.optionに新しいもの設定してupdate()をすると良いことがわかります。

チャートの更新 · Chart.js 日本語ドキュメント

tbunさんのソースコードを見るとchartjs-plugin-labels.jsを使おとしているようですが、古い書き方のようで試したところ動きませんでした。
新しい書き方をすると動きました。上記のことを踏まえると以下のようなコードができます。

function update(chart) { chart.options = { plugins: { labels: { render: function (d) { return d.label + ":" + d.percentage + "%" }, fontColor: '#000', position: 'outside', segment: true } } } chart.update(); }

力尽きたのであとは以下のコードを参考に続きを作ってみてください。


<!DOCTYPE html> <html> <head> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta charset="utf-8"> <script src="https://cdn.jsdelivr.net/npm/chart.js@2.9.1/dist/Chart.min.js"></script> <script src="https://cdn.jsdelivr.net/gh/emn178/chartjs-plugin-labels/src/chartjs-plugin-labels.js"></script> </head> <body> <!-- <script src="js/scripts.js"></script> --> <canvas id='CircleChart'></canvas> <input type="button" value="Check" onclick='update(CircleChart)'> <script> function update(chart) { chart.options = { plugins: { labels: { render: function (d) { return d.label + ":" + d.percentage + "%" }, fontColor: '#000', position: 'outside', segment: true } } } chart.update(); } var ctx = document.getElementById("CircleChart"); var CircleChart = new Chart(ctx, { type: 'pie', data: { labels: ["A", "B", "C", "D", "E", "F", "G"], datasets: [{ data: [38, 31, 21, 10, 38, 31, 21] }] }, options: { legend: { display: true } } }); </script> </script> </body> </html>

emn178/chartjs-plugin-labels

投稿2019/11/01 16:32

pogin503

総合スコア80

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ここに方法が書いてあるようです。

【チャートの更新 · Chart.js 日本語ドキュメント】
https://misc.0o0o.org/chartjs-doc-ja/developers/updates.html#オプションの更新

投稿2019/10/31 19:50

kei344

総合スコア69596

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問