HTML
xxxxxxxxxx
1
2
<div style="width:75%;">
3
<canvas id="canvas"></canvas>
4
</div>
CSS
1
1
JS
xxxxxxxxxx
1
'use strict';
2
3
window.chartColors = {
4
red: 'rgb(255, 99, 132)',
5
orange: 'rgb(255, 159, 64)',
6
yellow: 'rgb(255, 205, 86)',
7
green: 'rgb(75, 192, 192)',
8
blue: 'rgb(54, 162, 235)',
9
purple: 'rgb(153, 102, 255)',
10
grey: 'rgb(201, 203, 207)'
11
};
12
13
(function(global) {
14
var MONTHS = [
15
'January',
16
'February',
17
'March',
18
'April',
19
'May',
20
'June',
21
'July',
22
'August',
23
'September',
24
'October',
25
'November',
26
'December'
27
];
28
29
var COLORS = [
30
'#4dc9f6',
31
'#f67019',
32
'#f53794',
33
'#537bc4',
34
'#acc236',
35
'#166a8f',
36
'#00a950',
37
'#58595b',
38
'#8549ba'
39
];
40
41
var Samples = global.Samples || (global.Samples = {});
42
var Color = global.Color;
43
44
Samples.utils = {
45
// Adapted from http://indiegamr.com/generate-repeatable-random-numbers-in-js/
46
srand: function(seed) {
47
this._seed = seed;
48
},
49
50
rand: function(min, max) {
51
var seed = this._seed;
52
min = min === undefined ? 0 : min;
53
max = max === undefined ? 1 : max;
54
this._seed = (seed * 9301 + 49297) % 233280;
55
return min + (this._seed / 233280) * (max - min);
56
},
57
58
numbers: function(config) {
59
var cfg = config || {};
60
var min = cfg.min || 0;
61
var max = cfg.max || 1;
62
var from = cfg.from || [];
63
var count = cfg.count || 8;
64
var decimals = cfg.decimals || 8;
65
var continuity = cfg.continuity || 1;
66
var dfactor = Math.pow(10, decimals) || 0;
67
var data = [];
68
var i, value;
69
70
for (i = 0; i < count; ++i) {
71
value = (from[i] || 0) + this.rand(min, max);
72
if (this.rand() <= continuity) {
73
data.push(Math.round(dfactor * value) / dfactor);
74
} else {
75
data.push(null);
76
}
77
}
78
79
return data;
80
},
81
82
labels: function(config) {
83
var cfg = config || {};
84
var min = cfg.min || 0;
85
var max = cfg.max || 100;
86
var count = cfg.count || 8;
87
var step = (max - min) / count;
88
var decimals = cfg.decimals || 8;
89
var dfactor = Math.pow(10, decimals) || 0;
90
var prefix = cfg.prefix || '';
91
var values = [];
92
var i;
93
94
for (i = min; i < max; i += step) {
95
values.push(prefix + Math.round(dfactor * i) / dfactor);
96
}
97
98
return values;
99
},
100
101
months: function(config) {
102
var cfg = config || {};
103
var count = cfg.count || 12;
104
var section = cfg.section;
105
var values = [];
106
var i, value;
107
108
for (i = 0; i < count; ++i) {
109
value = MONTHS[Math.ceil(i) % 12];
110
values.push(value.substring(0, section));
111
}
112
113
return values;
114
},
115
116
color: function(index) {
117
return COLORS[index % COLORS.length];
118
},
119
120
transparentize: function(color, opacity) {
121
var alpha = opacity === undefined ? 0.5 : 1 - opacity;
122
return Color(color).alpha(alpha).rgbString();
123
}
124
};
125
126
// DEPRECATED
127
window.randomScalingFactor = function() {
128
return Math.round(Samples.utils.rand(-100, 100));
129
};
130
131
// INITIALIZATION
132
133
Samples.utils.srand(Date.now());
134
135
// Google Analytics
136
/* eslint-disable */
137
if (document.location.hostname.match(/^(www\.)?chartjs\.org$/)) {
138
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
139
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
140
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
141
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
142
ga('create', 'UA-28909194-3', 'auto');
143
ga('send', 'pageview');
144
}
145
/* eslint-enable */
146
147
}(this));
148
149
var config = {
150
type: 'line',
151
data: {
152
xLabels: ['January', 'February', 'March', 'April', 'May', 'June', 'July'],
153
yLabels: ['', 'Request Added', 'Request Viewed', 'Request Accepted', 'Request Solved', 'Solving Confirmed'],
154
datasets: [{
155
label: 'My First dataset',
156
data: ['', 'Request Added', 'Request Added', 'Request Added', 'Request Viewed', 'Request Viewed', 'Request Viewed'],
157
fill: false,
158
borderColor: window.chartColors.red,
159
backgroundColor: window.chartColors.red
160
}]
161
},
162
options: {
163
responsive: true,
164
title: {
165
display: true,
166
text: 'Chart with Non Numeric Y Axis'
167
},
168
scales: {
169
xAxes: [{
170
display: true,
171
scaleLabel: {
172
display: true,
173
labelString: 'Month'
174
}
175
}],
176
yAxes: [{
177
type: 'category',
178
position: 'left',
179
display: true,
180
scaleLabel: {
181
display: true,
182
labelString: 'Request State'
183
},
184
ticks: {
185
reverse: true
186
}
187
}]
188
}
189
}
190
};
191
192
window.onload = function() {
193
var ctx = document.getElementById('canvas').getContext('2d');
194
window.myLine = new Chart(ctx, config);
195
};
Console errors: 0