質問するログイン新規登録

回答編集履歴

5

ツールチップのundefined表示について

2017/11/08 03:53

投稿

shimitei
shimitei

スコア801

answer CHANGED
@@ -107,7 +107,7 @@
107
107
 
108
108
  ![イメージ説明](648aac3e0a662fb9eb1679291e4aa0b3.png)
109
109
 
110
- ```
110
+ ```js
111
111
  tooltips: {
112
112
  callbacks: {
113
113
  label: function (tooltipItem, data) {
@@ -115,4 +115,20 @@
115
115
  }
116
116
  }
117
117
  },
118
+ ```
119
+
120
+ # ツールチップのundefined表示について
121
+
122
+ これは色分けを実現するためにデータセットを分割したので、ツールチップのラベル表示のコードも変更しないといけません。
123
+ Start以前と以降で取得するデータを変える必要があります。
124
+ とりあえずundefinedだったら2番目のデータセットの値を表示に使うコードにしてみました。
125
+
126
+ ```js
127
+ tooltips: {
128
+ callbacks: {
129
+ label: function (tooltipItem, data) {
130
+ return (data.datasets[0].data[tooltipItem.index] || data.datasets[1].data[tooltipItem.index]) + " %";
131
+ }
132
+ }
133
+ },
118
134
  ```

4

ツールチップ内容のカスタマイズ

2017/11/08 03:53

投稿

shimitei
shimitei

スコア801

answer CHANGED
@@ -81,4 +81,38 @@
81
81
  showAllTooltips: true,
82
82
  },
83
83
  ```
84
- ![イメージ説明](db0286a8304021e8c8ce93724be70e58.png)
84
+ ![イメージ説明](db0286a8304021e8c8ce93724be70e58.png)
85
+
86
+ # ツールチップ内容のカスタマイズ
87
+
88
+ ## タイトルなし、ラベルのみ
89
+
90
+ ![イメージ説明](c6d2529e210ae7be9e10a111d48539f6.png)
91
+
92
+ ```js
93
+ tooltips: {
94
+ callbacks: {
95
+ title: function(tooltipItems, data) {return ""},
96
+ label: function (tooltipItem, data) {
97
+ return data.labels[tooltipItem.index]
98
+ + ": "
99
+ + data.datasets[0].data[tooltipItem.index]
100
+ + " %";
101
+ }
102
+ }
103
+ },
104
+ ```
105
+
106
+ ## タイトルとラベルの2行
107
+
108
+ ![イメージ説明](648aac3e0a662fb9eb1679291e4aa0b3.png)
109
+
110
+ ```
111
+ tooltips: {
112
+ callbacks: {
113
+ label: function (tooltipItem, data) {
114
+ return data.datasets[0].data[tooltipItem.index] + " %";
115
+ }
116
+ }
117
+ },
118
+ ```

3

MarkdownのコードブロックにJavaScript言語指定

2017/11/08 02:59

投稿

shimitei
shimitei

スコア801

answer CHANGED
@@ -26,7 +26,7 @@
26
26
  stackoverflowのコードを引用します。
27
27
  これはnew Chart(...)よりも前に記述しておかないと効果ありません。
28
28
 
29
- ```
29
+ ```js
30
30
  Chart.pluginService.register({
31
31
  beforeRender: function (chart) {
32
32
  if (chart.config.options.showAllTooltips) {

2

MarkdownのコードブロックにJavaScript言語指定

2017/11/07 06:58

投稿

shimitei
shimitei

スコア801

answer CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  データセットを分けないとできなさそうですね。
4
4
 
5
- ```
5
+ ```js
6
6
  datasets: [
7
7
  // Start以前
8
8
  {
@@ -76,7 +76,7 @@
76
76
  ツールチップを常に出しておきたいチャートでは、optionsにshowAllTooltips: trueを設定します。
77
77
 
78
78
 
79
- ```
79
+ ```js
80
80
  options: {
81
81
  showAllTooltips: true,
82
82
  },

1

ツールチップの常時表示追加

2017/11/07 06:57

投稿

shimitei
shimitei

スコア801

answer CHANGED
@@ -17,4 +17,68 @@
17
17
  ]
18
18
  ```
19
19
 
20
- ![イメージ説明](6501502e1ff97c01508b72a9927afe7d.png)
20
+ ![イメージ説明](6501502e1ff97c01508b72a9927afe7d.png)
21
+
22
+ # ツールチップの常時表示
23
+
24
+ Chart.js 2.3.0あたりのバージョンならば[Chart.js v2: How to make tooltips always appear on pie chart?](https://stackoverflow.com/a/37989832)のコードで実現できます。
25
+
26
+ stackoverflowのコードを引用します。
27
+ これはnew Chart(...)よりも前に記述しておかないと効果ありません。
28
+
29
+ ```
30
+ Chart.pluginService.register({
31
+ beforeRender: function (chart) {
32
+ if (chart.config.options.showAllTooltips) {
33
+ // create an array of tooltips
34
+ // we can't use the chart tooltip because there is only one tooltip per chart
35
+ chart.pluginTooltips = [];
36
+ chart.config.data.datasets.forEach(function (dataset, i) {
37
+ chart.getDatasetMeta(i).data.forEach(function (sector, j) {
38
+ chart.pluginTooltips.push(new Chart.Tooltip({
39
+ _chart: chart.chart,
40
+ _chartInstance: chart,
41
+ _data: chart.data,
42
+ _options: chart.options.tooltips,
43
+ _active: [sector]
44
+ }, chart));
45
+ });
46
+ });
47
+
48
+ // turn off normal tooltips
49
+ chart.options.tooltips.enabled = false;
50
+ }
51
+ },
52
+ afterDraw: function (chart, easing) {
53
+ if (chart.config.options.showAllTooltips) {
54
+ // we don't want the permanent tooltips to animate, so don't do anything till the animation runs atleast once
55
+ if (!chart.allTooltipsOnce) {
56
+ if (easing !== 1)
57
+ return;
58
+ chart.allTooltipsOnce = true;
59
+ }
60
+
61
+ // turn on tooltips
62
+ chart.options.tooltips.enabled = true;
63
+ Chart.helpers.each(chart.pluginTooltips, function (tooltip) {
64
+ tooltip.initialize();
65
+ tooltip.update();
66
+ // we don't actually need this since we are not animating tooltips
67
+ tooltip.pivot();
68
+ tooltip.transition(easing).draw();
69
+ });
70
+ chart.options.tooltips.enabled = false;
71
+ }
72
+ }
73
+ });
74
+ ```
75
+
76
+ ツールチップを常に出しておきたいチャートでは、optionsにshowAllTooltips: trueを設定します。
77
+
78
+
79
+ ```
80
+ options: {
81
+ showAllTooltips: true,
82
+ },
83
+ ```
84
+ ![イメージ説明](db0286a8304021e8c8ce93724be70e58.png)