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

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

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

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

Q&A

解決済

2回答

1835閲覧

【chart.js】レーダーチャートの矩形の背景色について

kaoru08011

総合スコア11

JavaScript

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

0グッド

0クリップ

投稿2018/07/06 06:57

編集2018/07/06 07:29

前提・実現したいこと

chart.jsを使ってレーダーチャートを作っています。
グレーの背景色の上にチャートを設置するので、
チャートの目盛り内の背景色を白(#fff)に設定したいのですが、
どのオプションを設定すれば可能になるでしょうか。
また、どのような実現方法があるでしょうか。
レーダーチャート自体は問題なく表示されています。

具体的には、下記のようなチャートでいうと、
矩形(100〜0の目盛りの部分)の背景色を白くしたいです。
参考

該当のソースコード

HTML

1<div id="contents"> 2<div class="chartArea"> 3 <canvas id="myChart"></canvas> 4</div> 5</div> 6 7 8<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.11.1.min.js"></script> 9<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.1.4/Chart.min.js">

CSS

1 body { 2 background: #fff; 3 } 4 #contents { 5 width: 60%; 6 margin: 0 auto; 7 padding: 100px 0; 8 } 9 .chartArea { 10 max-width: 500px; 11 height: 500px; 12 margin: 0 auto; 13 background: #ccc; 14 }

JS

1 (function(){ 2 'use strict'; 3 var type = 'radar'; 4 5 var data = { 6 labels: ['項目1', '項目2', '項目3', '項目4', '項目5', '項目6'], 7 datasets: [{ 8 label: 'sample', 9 data: [4, 2, 5, 2, 5, 3], 10 backgroundColor: 'rgba(182,124,125,.4)', 11 borderColor: 'rgba(202,129,125,1)', 12 borderWidth: 1, 13 pointRadius: 0, 14 pointHitRadius: 0, 15 }] 16 }; 17 18 var options = { 19 scale: { 20 pointLabels: { 21 fontColor: '#333', 22 fontSize: 14, 23 fontFamily: "'游ゴシック',YuGothic,NotoSans,'ヒラギノ角ゴ ProN W3','Hiragino Kaku Gothic ProN','メイリオ',Meiryo,sans-serif", 24 }, 25 ticks: { 26 display: false, 27 suggestedMin: 0, 28 suggestedMax: 4, 29 }, 30 gridLines: { 31 display: true, 32 }, 33 }, 34 title: { 35 display: false, 36 }, 37 animation: { 38 duration: 1500, 39 }, 40 legend: { 41 display : false, 42 } 43 }; 44 45 var ctx = document.getElementById('myChart').getContext('2d'); 46 var myChart = new Chart(ctx, { 47 type: type, 48 data: data, 49 options: options 50 }) 51 })(); 52

補足

chart.jsのドキュメントを見ると、目盛り関連のオプションは「gridLines」で設定できるようですが、
ここには背景色のオプションがそもそも無いようで・・・、どうにもならないでしょうか。
お力添えをいただければと思います。

参考:chart.jsドキュメント

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

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

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

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

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

m.ts10806

2018/07/06 07:18

JavaScriptコードも省略されてしまうと(特に冒頭)再現確認が難しいです。やはり最低限htmlも記載されたほうが良いかと。
kaoru08011

2018/07/06 07:27

ご指摘ありがとうございます。デモで作っていた最低限のコードでしたので省いてしまっていました・・・。
guest

回答2

0

自己解決

mts10806様にご教示いただいた方法で解決いたしました。

参考ページの通り、
canvas描画の前にbeforeDraw関数を記述。
ただしこのままだとcanvas全体に色が敷かれてしまうので
fillRect()メソッドの代わりにlineToメソッドでレーダーチャートと同形の矩形を描画し解決いたしました。

ありがとうございました。

JS

1 (function(){ 2 Chart.pluginService.register({ 3 beforeDraw: function(c){ 4 if (c.config.options.chartArea && c.config.options.chartArea.backgroundColor) { 5 var ctx = c.chart.ctx; 6 var chartArea = c.chartArea; 7 ctx.save(); 8 ctx.fillStyle = c.config.options.chartArea.backgroundColor; 9 //ctx.fillRect(chartArea.left, chartArea.top, chartArea.right - chartArea.left, chartArea.bottom - chartArea.top); 10 ctx.beginPath(); 11 ctx.moveTo(250,19); 12 ctx.lineTo(342,72); 13 ctx.lineTo(342,178); 14 ctx.lineTo(250,230); 15 ctx.lineTo(158,178); 16 ctx.lineTo(158,72); 17 ctx.closePath(); 18 ctx.fill(); 19 ctx.restore(); 20 } 21 } 22 }); 23 24 var type = 'radar'; 25 26         〜略〜 27 28 29 var options = { 30 scale: { 31 pointLabels: { 32 fontColor: '#333', 33 fontSize: 14, 34 fontFamily: "'游ゴシック',YuGothic,NotoSans,'ヒラギノ角ゴ ProN W3','Hiragino Kaku Gothic ProN','メイリオ',Meiryo,sans-serif", 35 }, 36 37         〜略〜 38 39 chartArea: { 40 backgroundColor: 'rgba(247, 247, 246, 1)' 41 } 42 }; 43 44 var ctx = document.getElementById('myChart').getContext('2d'); 45 46 var myChart = new Chart(ctx, { 47 type: type, 48 data: data, 49 options: options 50 }) 51 })(); 52

投稿2018/07/06 08:37

kaoru08011

総合スコア11

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

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

m.ts10806

2018/07/06 08:42

直接の解決方法はこちらなので、こちらのご自身の回答をベストアンサーとされた方が良いと思います。 あとから同じ問題を抱えた人が見たときにベストアンサーが最も目につきます。
kaoru08011

2018/07/06 08:50

そうなのですね!登録したてで操作等あまり分からずで・・・。 アドバイスいただき重ね重ねありがとうございます。
guest

0

下記の記事は参考になりますでしょうか。

元々あるオプションで解決するのではなく、
色々と機能追加していくようです。

「グラフエリア背景」あたりで実現可能に思いますがいかがでしょうか?
※すみません。私がただしく理解できていないかもしれません。ひとまず全体背景色は上記URL参考に変更できました。

投稿2018/07/06 07:41

m.ts10806

総合スコア80850

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

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

kaoru08011

2018/07/06 08:31

ご教示いただきありがとうございます! 教えていただいたページの内容で実現することができました! 一番最初に掲載されている記述を使い解決できましたが、 こちらの記述だとcanvasエリア全体に背景色が敷かれてしまいますので fillRect()メソッドの記述を削除し、代わりに lineTo()メソッドを使いレーダーチャートの矩形の形にパスを引くことで思い通りの背景を敷くことができました。 (説明が下手ですみません・・・) とても助かりました。 お力添えいただき、本当にありがとうございました。
m.ts10806

2018/07/06 08:33

どこか(chart.js本体)で色つけたり形作ってるのは確かなので、そこをいじれば何とかなるのはなるようですね。 解決できたようで何よりです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問