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

質問編集履歴

1

文章を一部修正

2021/03/24 14:32

投稿

usaabc
usaabc

スコア1

title CHANGED
File without changes
body CHANGED
@@ -1,18 +1,47 @@
1
1
  djangoで学習時間を記録するアプリを作っていますが、chart.jsのグラフが正常に表示されません
2
2
  作りたいグラフは
3
- ・横軸はdate型の日付(modelのday)
3
+ ・横軸はdate型の日付(後述するmodelのday)
4
4
  ・縦軸は時間
5
5
  ・dataはint型の時間(modelのtime)
6
6
  ・ラベルはChar型の項目名(modelのcategory)
7
- としたいですが、下図のように横軸に入るべき日付とラベルが出所の分からない文字になっています
7
+ としたいです。
8
8
 
9
- 唯一、データとなるint型時間は正常表示されてるようです。
9
+ index.html内<canvas id="myBarChart">
10
- 初歩的なミスのかもしれませんが、どうぞよろしくお願いします。
11
10
 
11
+ data: {
12
+ labels: {{ **days**|safe }},
13
+ datasets: [
14
+ {
15
+ label: {{ labels|safe }},
12
- ### 発生している問題・エラーメッセージ
16
+ data: {{ time|safe }},
13
- ![![イメージ説明](0dd8e9e2bbd698c47e2736840f819ab5.jpeg)
17
+ }]
14
18
 
19
+ とするとグラフが表示されませんでした。
20
+ 試しに
15
21
 
22
+ data: {
23
+ labels: {{ **labels**|safe }},
24
+ datasets: [
25
+ {
26
+ label: {{ labels|safe }},
27
+ data: {{ time|safe }},
28
+ }]
29
+
30
+ とdaysのところにlabelsを入れてみたところ以下のようなグラフが表示されました。
31
+
32
+ ![イメージ説明](2d8dfd188dbe4c35529d54cda027ff42.jpeg)
33
+
34
+ 本来の希望は横軸の項目に日付が出るようにしたいので、viewでのデータの取り出し方の問題かと
35
+ 思うのですが、ご教示いただけないでしょうか。
36
+
37
+ *グラフ上部の凡例(labels)がつながって表示されてしまっていますが、そちらはいったん無視して横軸を解決したいです。
38
+ *コードのインデント処理ができておらず、見づらい状態ですみません
39
+
40
+ ###起きている問題
41
+ グラフの横軸に日付を入れるためviewで取り出したdaysを要素に入れるとグラフが表示されなくなる。
42
+
43
+
44
+
16
45
  ### 該当のソースコード
17
46
 
18
47
  ```
@@ -81,29 +110,34 @@
81
110
  <meta charset="UTF-8">
82
111
  <title>Title</title>
83
112
  <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.4/Chart.min.js"></script>
113
+ <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.3/Chart.min.js"></script>
114
+ <script type="text/javascript" src="https://github.com/nagix/chartjs-plugin-colorschemes/releases/download/v0.2.0/chartjs-plugin-colorschemes.min.js"></script>
84
115
  </head>
85
116
 
86
117
  <body>
87
118
  <div>
88
- <canvas id="myBarChart" width="50px" height="30px"></canvas>
119
+ <canvas id="myBarChart"></canvas>
89
-
90
120
  <script>
91
121
  var ctx = document.getElementById("myBarChart")
92
122
  var myBarChart = new Chart(ctx, {
93
123
  type: 'bar',
94
124
  data: {
95
- labels: '{{ days }}',
125
+ labels: {{ labels|safe }},
96
126
  datasets: [
97
127
  {
98
- label: '{{ labels }}',
128
+ label: {{ labels|safe }},
99
- data: {{ time }},
129
+ data: {{ time|safe }},
100
- backgroundColor: "rgba(130,201,169,0.5)"
101
130
  }]
102
131
  },
103
132
  options: {
133
+  plugins: {
134
+  colorschemes: {
135
+  scheme: 'brewer.Paired12'
136
+ }
137
+ },
104
138
  title: {
105
139
  display: true,
106
- text: '学習状況'
140
+ text: '学習実施状況'
107
141
  },
108
142
  scales: {
109
143
  yAxes: [{
@@ -121,7 +155,32 @@
121
155
  });
122
156
  </script>
123
157
 
158
+ <canvas id="myPieChart"></canvas>
124
159
  </div>
160
+ <script type="text/javascript">
161
+ var ctx = document.getElementById("myPieChart");
162
+ var myPieChart = new Chart(ctx, {
163
+ type: 'pie',
164
+ data: {
165
+ labels: "{{ piedata.category }}",
166
+ datasets: [{
167
+ backgroundColor: [
168
+ "#BB5179",
169
+ "#FAFF67",
170
+ "#58A27C",
171
+ "#3C00FF"
172
+ ],
173
+ data: [38, 31, 21, 10]
174
+ }]
175
+ },
176
+ options: {
177
+ title: {
178
+ display: true,
179
+ text: '学習内訳'
180
+ }
181
+ }
182
+ });
183
+ </script>
125
184
  {% endblock %}
126
185
 
127
186
  </body>