質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.50%
canvas

HTML5の<canvas>要素用のタグです。CanvasはHTML5から導入された、二次元の図形描写が可能な要素です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

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

CSS

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

Q&A

解決済

1回答

6172閲覧

Chart.jsのradarチャート内のグラフの背景色を変えたい

musashidayo

総合スコア53

canvas

HTML5の<canvas>要素用のタグです。CanvasはHTML5から導入された、二次元の図形描写が可能な要素です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

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

CSS

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

0グッド

0クリップ

投稿2018/09/03 06:11

編集2018/09/03 06:45

Chart.js(https://www.chartjs.org/)というものを使ってレーダーチャートを出力していて、背景色(グラフエリア内のみ)を変えたいと思い色々調べたのですが、レーダーチャートの内部だけの色を変更する方法がわかりません。
http://oboe2uran.hatenablog.com/entry/2018/01/27/181126 こちらを参考にしてやってみたのですが、canvasタグ領域内の背景色が全て変わってしまい、思う通りにはいきませんでした。

以下コードをChart.jsに追記

Chart.pluginService.register({ beforeDraw: function(c){ if (c.config.options.chartArea && c.config.options.chartArea.backgroundColor) { var ctx = c.chart.ctx; var chartArea = c.chartArea; ctx.save(); ctx.fillStyle = c.config.options.chartArea.backgroundColor; ctx.fillRect(chartArea.left, chartArea.top, chartArea.right - chartArea.left, chartArea.bottom - chartArea.top); ctx.restore(); } } });

html

1<div class="canvas_outer"> 2 <canvas id="myRadarChart1" width="" height=""></canvas> 3 </div> 4 <script> 5 Chart.pluginService.register({ 6 beforeDraw: function (chart, easing) { 7 if (chart.config.options.chartArea && chart.config.options.chartArea.backgroundColor) { 8 var ctx = chart.chart.ctx; 9 var chartArea = chart.chartArea; 10 11 ctx.save(); 12 ctx.fillStyle = chart.config.options.chartArea.backgroundColor; 13 ctx.fillRect(chartArea.left, chartArea.top, chartArea.right - chartArea.left, chartArea.bottom - chartArea.top); 14 ctx.restore(); 15 } 16 } 17 }); 18 var ctx = document.getElementById("myRadarChart1").getContext('2d'); 19 var myRadarChart1 = new Chart(ctx, { 20 type: 'radar', 21 data: { 22 labels: [ 23 'A', 24 'B', 25 'C', 26 'D', 27 'E' 28 ], 29 datasets: [{ 30 label: '', 31 data: [0,0,0,0,0,0], 32 backgroundColor: [ 33 'rgba(255, 107, 107, 0.678)', 34 ], 35 borderColor: [ 36 'rgba(255, 107, 107, 1)', 37 ], 38 borderWidth: 1 39 }] 40 }, 41 options: { 42 chartArea: { 43 backgroundColor: 'rgba(230, 238, 255, 0.6)' 44 }, 45 legend: { 46 display: false 47 }, 48 scale: { 49 pointLabels: { 50 fontSize: 12, //フォントサイズ 51 fontFamily: "'游ゴシック',YuGothic,NotoSans,'ヒラギノ角ゴ ProN W3','Hiragino Kaku Gothic ProN','メイリオ',Meiryo,sans-serif", 52 }, 53 ticks: { 54 fontSize: 10, 55 stepSize: 1, 56 max: 5, 57 beginAtZero: true, 58 }, 59 gridLines: { 60 pointLabels: { 61 fontSize: 18 62 } 63 } 64 }, 65 scales: { 66 yAxes: [{ 67 display: false, 68 gridLines: { 69 drawBorder: false 70 } 71 }], 72 xAxes: [{ 73 display: false, 74 gridLines: { 75 drawBorder: false 76 } 77 }] 78 } 79 } 80 }); 81 </script>

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

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

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

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

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

liveasnotes

2018/09/03 06:39

実際に書いたコードを載せてください.そうでないと,何に失敗し,どうすれば解決できるのか分かりません.またコードを載せる際は,コードブロックで囲ってください
guest

回答1

0

ベストアンサー

レーダーチャートは矩形ではないのでそれぞれの座標を出さないといけないのでしょう。

JavaScript

1 Chart.pluginService.register({ 2 beforeDraw: function (chart, easing) { 3 if (chart.config.options.chartArea && chart.config.options.chartArea.backgroundColor) { 4 var ctx = chart.chart.ctx; 5 var chartArea = chart.chartArea; 6 7 ctx.save(); 8 ctx.beginPath(); 9 ctx.fillStyle = chart.config.options.chartArea.backgroundColor; 10 var scale = chart.scale; 11 var ticksAsNumbers = scale.ticksAsNumbers; 12 var max = ticksAsNumbers[ticksAsNumbers.length - 1]; 13 for (var i = 0; i < ticksAsNumbers.length; i++) { 14 var point = scale.getPointPositionForValue(i, max); 15 if (i === 0) { 16 ctx.moveTo(point.x, point.y); 17 } else { 18 ctx.lineTo(point.x, point.y); 19 } 20 } 21 22 ctx.fill(); 23 ctx.restore(); 24 } 25 } 26 });

投稿2018/09/03 08:21

x_x

総合スコア13749

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

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

musashidayo

2018/09/03 09:26

回答ありがとうございます!こちらのコードでやってみたのですが、canvasタグ全体にbackgroundが効いてしまいます...
x_x

2018/09/03 09:33 編集

前のスクリプトを動かしているのでは? 提示コードからの一部上書きで確認済みです。
musashidayo

2018/09/03 09:45

申し訳ありません。 もう一度キャッシュクリアしてやってみたところしっかりと動いていました! ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問