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

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

詳細はこちら
JavaScript

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

HTML

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

CSS

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

Q&A

解決済

3回答

1754閲覧

chart.jsで積立グラフを描写した際、要素の数が多いとツールチップが表示しきれない問題を解決したい。

退会済みユーザー

退会済みユーザー

総合スコア0

JavaScript

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

HTML

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

CSS

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

0グッド

1クリップ

投稿2019/10/23 03:31

編集2019/12/16 15:46

chart.jsで積立グラフを作成したのですが、要素の数が多いとツールチップがcanvasを超えてしまい、全て表示しきれないという事態が発生しております。特にスマートフォン表示の時に顕著です。
canvasの高さを変える方法以外に何か良い方法はありませんでしょうか?
詳しい方アドバイスお願いします。

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

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

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

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

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

guest

回答3

0

ご質問の解決方法ではないのですが
私が関わった案件の場合は、円グラフにして、ツールチップをオフにし、「chartjs-plugin-labels」を使用して外側に数値を出しました…。

そのような内容の場合、棒グラフが適切かどうか、も検討されたほうがいいかもしれません。

投稿2019/10/23 03:46

m_o

総合スコア109

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

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

退会済みユーザー

退会済みユーザー

2019/10/23 05:48

素晴らしいプラグインのご紹介ありがとうございます。 こういった方法もあるのですね。 さて、質問文にあるツールチップが表示しきれないという問題なのですが、上手くツールチップ全体が表示される時もあります。 そこがまた困ったとこであり、頭を悩ませているところでもあります。
guest

0

以前同様の質問に回答しました。
参考になるでしょうか?
https://teratail.com/questions/153939

投稿2019/10/24 01:06

x_x

総合スコア13749

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

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

退会済みユーザー

退会済みユーザー

2019/10/24 14:05

アドバイスありがとうございます。 やはり改行は難しいんですかね?
guest

0

ベストアンサー

External (Custom) Tooltipsっつーのを使うと、ツールチップをCanvasの中でなくElementとして書き出せるっぽいっす。
公式の例をそのまま雑に適用したキャプチャがこちら↓Canvasエリアからtooltipがハミデントしてます。
イメージ説明
クッソ雑なJavaScript部分はこちら↓

javascript

1 2 var ctx = document.getElementById("Chart").getContext('2d'); 3 var Chart = new Chart(ctx, { 4 type: 'bar', 5 data: { 6 labels: ["2018/9", "2018/10", "2018/11"], 7 datasets: [ 8 { 9 label: "A", 10 data: [20, 26, 12], 11 }, 12 { 13 label: "B", 14 data: [28, 22, 32], 15 }, 16 17 { 18 label: "C", 19 data: [15, 23, 15], 20 }, 21 { 22 label: "D", 23 data: [20, 26, 12], 24 }, 25 { 26 label: "E", 27 data: [28, 22, 32], 28 }, 29 30 { 31 label: "F", 32 data: [15, 23, 15], 33 }, 34 { 35 label: "G", 36 data: [20, 26, 12], 37 }, 38 { 39 label: "H", 40 data: [28, 22, 32], 41 }, 42 43 { 44 label: "I", 45 data: [15, 23, 15], 46 }, 47 { 48 label: "J", 49 data: [20, 26, 12], 50 }, 51 { 52 label: "K", 53 data: [28, 22, 32], 54 }, 55 56 { 57 label: "L", 58 data: [15, 23, 15], 59 }, 60 { 61 label: "M", 62 data: [20, 26, 12], 63 }, 64 { 65 label: "N", 66 data: [28, 22, 32], 67 }, 68 69 { 70 label: "O", 71 data: [15, 23, 15], 72 }, 73 { 74 label: "P", 75 data: [20, 26, 12], 76 }, 77 { 78 label: "Q", 79 data: [28, 22, 32], 80 }, 81 82 { 83 label: "R", 84 data: [15, 23, 15], 85 }, 86 { 87 label: "S", 88 data: [20, 26, 12], 89 }, 90 { 91 label: "T", 92 data: [28, 22, 32], 93 }, 94 95 { 96 label: "U", 97 data: [15, 23, 15], 98 }, 99 ] 100 }, 101 options: { 102 responsive: true, 103 tooltips: { 104 // mode: 'nearest', 105 // intersect: false, 106 enabled: false, 107 mode: "index", 108 custom:a 109 }, 110 scales: { 111 xAxes: [{ 112 stacked: true, 113 }], 114 yAxes: [{ 115 stacked: true, 116 }], 117 } 118 } 119}); 120 121function a(tooltipModel) { 122 // Tooltip Element 123 var tooltipEl = document.getElementById('chartjs-tooltip'); 124 125 // Create element on first render 126 if (!tooltipEl) { 127 tooltipEl = document.createElement('div'); 128 tooltipEl.id = 'chartjs-tooltip'; 129 tooltipEl.innerHTML = '<table></table>'; 130 document.body.appendChild(tooltipEl); 131 } 132 133 // Hide if no tooltip 134 if (tooltipModel.opacity === 0) { 135 tooltipEl.style.opacity = 0; 136 return; 137 } 138 139 // Set caret Position 140 tooltipEl.classList.remove('above', 'below', 'no-transform'); 141 if (tooltipModel.yAlign) { 142 tooltipEl.classList.add(tooltipModel.yAlign); 143 } else { 144 tooltipEl.classList.add('no-transform'); 145 } 146 147 function getBody(bodyItem) { 148 return bodyItem.lines; 149 } 150 151 // Set Text 152 if (tooltipModel.body) { 153 var titleLines = tooltipModel.title || []; 154 var bodyLines = tooltipModel.body.map(getBody); 155 156 var innerHtml = '<thead>'; 157 158 titleLines.forEach(function(title) { 159 innerHtml += '<tr><th>' + title + '</th></tr>'; 160 }); 161 innerHtml += '</thead><tbody>'; 162 163 bodyLines.forEach(function(body, i) { 164 var colors = tooltipModel.labelColors[i]; 165 var style = 'background:' + colors.backgroundColor; 166 style += '; border-color:' + colors.borderColor; 167 style += '; border-width: 2px'; 168 var span = '<span style="' + style + '"></span>'; 169 innerHtml += '<tr><td>' + span + body + '</td></tr>'; 170 }); 171 innerHtml += '</tbody>'; 172 173 var tableRoot = tooltipEl.querySelector('table'); 174 tableRoot.innerHTML = innerHtml; 175 } 176 177 // `this` will be the overall tooltip 178 var position = this._chart.canvas.getBoundingClientRect(); 179 180 // Display, position, and set styles for font 181 tooltipEl.style.opacity = 1; 182 tooltipEl.style.position = 'absolute'; 183 tooltipEl.style.left = position.left + window.pageXOffset + tooltipModel.caretX + 'px'; 184 tooltipEl.style.top = position.top + window.pageYOffset + tooltipModel.caretY + 'px'; 185 tooltipEl.style.fontFamily = tooltipModel._bodyFontFamily; 186 tooltipEl.style.fontSize = tooltipModel.bodyFontSize + 'px'; 187 tooltipEl.style.fontStyle = tooltipModel._bodyFontStyle; 188 tooltipEl.style.padding = tooltipModel.yPadding + 'px ' + tooltipModel.xPadding + 'px'; 189 tooltipEl.style.pointerEvents = 'none'; 190 } 191

結論:頑張ればいける!

投稿2019/10/23 07:29

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2019/10/23 10:45

このような方法もあるのですね。勉強になります!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問