-
Notifications
You must be signed in to change notification settings - Fork 16
/
Copy pathcanvas-background.html
214 lines (214 loc) · 49.5 KB
/
canvas-background.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Canvas background | Chart.js</title>
<meta name="generator" content="VuePress 1.9.7">
<link rel="icon" href="/docs/next/favicon.ico">
<meta name="description" content="Open source HTML5 Charts for your website">
<link rel="preload" href="/docs/next/assets/css/0.styles.32b47955.css" as="style"><link rel="preload" href="/docs/next/assets/js/app.79ca5bdb.js" as="script"><link rel="preload" href="/docs/next/assets/js/2.5288603d.js" as="script"><link rel="preload" href="/docs/next/assets/js/154.dcc1bf83.js" as="script"><link rel="preload" href="/docs/next/assets/js/3.231e388d.js" as="script"><link rel="prefetch" href="/docs/next/assets/js/10.fb5e13f1.js"><link rel="prefetch" href="/docs/next/assets/js/100.29d79c56.js"><link rel="prefetch" href="/docs/next/assets/js/101.9684e51f.js"><link rel="prefetch" href="/docs/next/assets/js/102.0d12d2f7.js"><link rel="prefetch" href="/docs/next/assets/js/103.100effdb.js"><link rel="prefetch" href="/docs/next/assets/js/104.24a8af70.js"><link rel="prefetch" href="/docs/next/assets/js/105.2c90bfa6.js"><link rel="prefetch" href="/docs/next/assets/js/106.35728af1.js"><link rel="prefetch" href="/docs/next/assets/js/107.0b85f7c5.js"><link rel="prefetch" href="/docs/next/assets/js/108.445273e7.js"><link rel="prefetch" href="/docs/next/assets/js/109.0b503640.js"><link rel="prefetch" href="/docs/next/assets/js/11.7083b42b.js"><link rel="prefetch" href="/docs/next/assets/js/110.284b9fef.js"><link rel="prefetch" href="/docs/next/assets/js/111.2aaeed25.js"><link rel="prefetch" href="/docs/next/assets/js/112.6307ce4c.js"><link rel="prefetch" href="/docs/next/assets/js/113.ecc135a0.js"><link rel="prefetch" href="/docs/next/assets/js/114.f3e18022.js"><link rel="prefetch" href="/docs/next/assets/js/115.b9b878a5.js"><link rel="prefetch" href="/docs/next/assets/js/116.8a5413c9.js"><link rel="prefetch" href="/docs/next/assets/js/117.b6a3f725.js"><link rel="prefetch" href="/docs/next/assets/js/118.638ca772.js"><link rel="prefetch" href="/docs/next/assets/js/119.3a6c7f58.js"><link rel="prefetch" href="/docs/next/assets/js/12.26a4a094.js"><link rel="prefetch" href="/docs/next/assets/js/120.133613bd.js"><link rel="prefetch" href="/docs/next/assets/js/121.38879b52.js"><link rel="prefetch" href="/docs/next/assets/js/122.e70efb25.js"><link rel="prefetch" href="/docs/next/assets/js/123.ecf4e45b.js"><link rel="prefetch" href="/docs/next/assets/js/124.3c22d3b7.js"><link rel="prefetch" href="/docs/next/assets/js/125.bcb07e8e.js"><link rel="prefetch" href="/docs/next/assets/js/126.780108e9.js"><link rel="prefetch" href="/docs/next/assets/js/127.0c43adf3.js"><link rel="prefetch" href="/docs/next/assets/js/128.b1e5c392.js"><link rel="prefetch" href="/docs/next/assets/js/129.722d462a.js"><link rel="prefetch" href="/docs/next/assets/js/13.366ee7a8.js"><link rel="prefetch" href="/docs/next/assets/js/130.d8a5df29.js"><link rel="prefetch" href="/docs/next/assets/js/131.f6874f18.js"><link rel="prefetch" href="/docs/next/assets/js/132.9696793d.js"><link rel="prefetch" href="/docs/next/assets/js/133.99b10526.js"><link rel="prefetch" href="/docs/next/assets/js/134.863416f6.js"><link rel="prefetch" href="/docs/next/assets/js/135.8adfc484.js"><link rel="prefetch" href="/docs/next/assets/js/136.00065c13.js"><link rel="prefetch" href="/docs/next/assets/js/137.4979ab54.js"><link rel="prefetch" href="/docs/next/assets/js/138.af5623db.js"><link rel="prefetch" href="/docs/next/assets/js/139.bb089116.js"><link rel="prefetch" href="/docs/next/assets/js/14.d5249207.js"><link rel="prefetch" href="/docs/next/assets/js/140.053942e3.js"><link rel="prefetch" href="/docs/next/assets/js/141.a610217a.js"><link rel="prefetch" href="/docs/next/assets/js/142.048c867e.js"><link rel="prefetch" href="/docs/next/assets/js/143.ff135b00.js"><link rel="prefetch" href="/docs/next/assets/js/144.cb3e808c.js"><link rel="prefetch" href="/docs/next/assets/js/145.0330bb10.js"><link rel="prefetch" href="/docs/next/assets/js/146.b9aa19ba.js"><link rel="prefetch" href="/docs/next/assets/js/147.88f18081.js"><link rel="prefetch" href="/docs/next/assets/js/148.7260d909.js"><link rel="prefetch" href="/docs/next/assets/js/149.049ebc71.js"><link rel="prefetch" href="/docs/next/assets/js/15.6e9e863d.js"><link rel="prefetch" href="/docs/next/assets/js/150.72de6801.js"><link rel="prefetch" href="/docs/next/assets/js/151.9a1222f4.js"><link rel="prefetch" href="/docs/next/assets/js/152.e4ef640c.js"><link rel="prefetch" href="/docs/next/assets/js/153.842b37f8.js"><link rel="prefetch" href="/docs/next/assets/js/155.808f1186.js"><link rel="prefetch" href="/docs/next/assets/js/156.4950bea1.js"><link rel="prefetch" href="/docs/next/assets/js/157.3e45bbac.js"><link rel="prefetch" href="/docs/next/assets/js/158.c21206a1.js"><link rel="prefetch" href="/docs/next/assets/js/159.3a4b3de1.js"><link rel="prefetch" href="/docs/next/assets/js/16.620ac2aa.js"><link rel="prefetch" href="/docs/next/assets/js/160.cbd9a6fd.js"><link rel="prefetch" href="/docs/next/assets/js/161.b755d895.js"><link rel="prefetch" href="/docs/next/assets/js/162.6faf871b.js"><link rel="prefetch" href="/docs/next/assets/js/163.49a712af.js"><link rel="prefetch" href="/docs/next/assets/js/164.e19eefad.js"><link rel="prefetch" href="/docs/next/assets/js/165.db7347fa.js"><link rel="prefetch" href="/docs/next/assets/js/166.81f1fd29.js"><link rel="prefetch" href="/docs/next/assets/js/167.e534233d.js"><link rel="prefetch" href="/docs/next/assets/js/168.03442a9b.js"><link rel="prefetch" href="/docs/next/assets/js/169.6811b2e2.js"><link rel="prefetch" href="/docs/next/assets/js/17.f9d4794b.js"><link rel="prefetch" href="/docs/next/assets/js/170.94c8dda0.js"><link rel="prefetch" href="/docs/next/assets/js/171.93191d1c.js"><link rel="prefetch" href="/docs/next/assets/js/172.7c6be1c4.js"><link rel="prefetch" href="/docs/next/assets/js/173.e74991cf.js"><link rel="prefetch" href="/docs/next/assets/js/174.b4506ab4.js"><link rel="prefetch" href="/docs/next/assets/js/175.dd0055c2.js"><link rel="prefetch" href="/docs/next/assets/js/176.ba30e45c.js"><link rel="prefetch" href="/docs/next/assets/js/177.6c95ad89.js"><link rel="prefetch" href="/docs/next/assets/js/178.3643eab4.js"><link rel="prefetch" href="/docs/next/assets/js/179.4ebe3d02.js"><link rel="prefetch" href="/docs/next/assets/js/18.3f871121.js"><link rel="prefetch" href="/docs/next/assets/js/180.3734648f.js"><link rel="prefetch" href="/docs/next/assets/js/181.32f6af14.js"><link rel="prefetch" href="/docs/next/assets/js/182.0d1dc780.js"><link rel="prefetch" href="/docs/next/assets/js/183.6cb28f4f.js"><link rel="prefetch" href="/docs/next/assets/js/184.2e06acee.js"><link rel="prefetch" href="/docs/next/assets/js/185.b48c9559.js"><link rel="prefetch" href="/docs/next/assets/js/186.581b5457.js"><link rel="prefetch" href="/docs/next/assets/js/187.378d638b.js"><link rel="prefetch" href="/docs/next/assets/js/188.3638c48e.js"><link rel="prefetch" href="/docs/next/assets/js/189.22440fc9.js"><link rel="prefetch" href="/docs/next/assets/js/19.d4506b63.js"><link rel="prefetch" href="/docs/next/assets/js/190.e44737e3.js"><link rel="prefetch" href="/docs/next/assets/js/191.3ea32821.js"><link rel="prefetch" href="/docs/next/assets/js/192.b3b8859a.js"><link rel="prefetch" href="/docs/next/assets/js/193.96c5c443.js"><link rel="prefetch" href="/docs/next/assets/js/194.8e737951.js"><link rel="prefetch" href="/docs/next/assets/js/195.ec106947.js"><link rel="prefetch" href="/docs/next/assets/js/196.e05df418.js"><link rel="prefetch" href="/docs/next/assets/js/197.b607bf8b.js"><link rel="prefetch" href="/docs/next/assets/js/198.012643a1.js"><link rel="prefetch" href="/docs/next/assets/js/199.d3bd5339.js"><link rel="prefetch" href="/docs/next/assets/js/20.3ec0ad7f.js"><link rel="prefetch" href="/docs/next/assets/js/200.beca8001.js"><link rel="prefetch" href="/docs/next/assets/js/201.ffb93323.js"><link rel="prefetch" href="/docs/next/assets/js/202.93e30a8c.js"><link rel="prefetch" href="/docs/next/assets/js/203.2b1c70de.js"><link rel="prefetch" href="/docs/next/assets/js/204.13e158bc.js"><link rel="prefetch" href="/docs/next/assets/js/205.073b94a1.js"><link rel="prefetch" href="/docs/next/assets/js/206.edf16331.js"><link rel="prefetch" href="/docs/next/assets/js/207.bd1ef1bf.js"><link rel="prefetch" href="/docs/next/assets/js/208.78ba2dba.js"><link rel="prefetch" href="/docs/next/assets/js/209.ed3eb7b2.js"><link rel="prefetch" href="/docs/next/assets/js/21.492881f9.js"><link rel="prefetch" href="/docs/next/assets/js/210.909f0fb0.js"><link rel="prefetch" href="/docs/next/assets/js/211.280caeca.js"><link rel="prefetch" href="/docs/next/assets/js/212.782948b6.js"><link rel="prefetch" href="/docs/next/assets/js/213.2bbda299.js"><link rel="prefetch" href="/docs/next/assets/js/214.20e42842.js"><link rel="prefetch" href="/docs/next/assets/js/215.24b3bd89.js"><link rel="prefetch" href="/docs/next/assets/js/216.bc1e098a.js"><link rel="prefetch" href="/docs/next/assets/js/217.d63d8f79.js"><link rel="prefetch" href="/docs/next/assets/js/218.3c6dc5d5.js"><link rel="prefetch" href="/docs/next/assets/js/219.7af47c97.js"><link rel="prefetch" href="/docs/next/assets/js/22.19b1ef88.js"><link rel="prefetch" href="/docs/next/assets/js/220.c09d14b9.js"><link rel="prefetch" href="/docs/next/assets/js/221.c7e033ab.js"><link rel="prefetch" href="/docs/next/assets/js/222.105acb37.js"><link rel="prefetch" href="/docs/next/assets/js/223.1a8bbb8c.js"><link rel="prefetch" href="/docs/next/assets/js/224.a62aa6de.js"><link rel="prefetch" href="/docs/next/assets/js/225.ce55392d.js"><link rel="prefetch" href="/docs/next/assets/js/226.fb27cdb4.js"><link rel="prefetch" href="/docs/next/assets/js/227.9959b8a2.js"><link rel="prefetch" href="/docs/next/assets/js/228.3d216901.js"><link rel="prefetch" href="/docs/next/assets/js/229.5a942b8c.js"><link rel="prefetch" href="/docs/next/assets/js/23.bd5eb474.js"><link rel="prefetch" href="/docs/next/assets/js/230.672ccc4d.js"><link rel="prefetch" href="/docs/next/assets/js/231.e0c505f2.js"><link rel="prefetch" href="/docs/next/assets/js/232.70f4212f.js"><link rel="prefetch" href="/docs/next/assets/js/233.89747115.js"><link rel="prefetch" href="/docs/next/assets/js/234.10d4f748.js"><link rel="prefetch" href="/docs/next/assets/js/235.00cba1d0.js"><link rel="prefetch" href="/docs/next/assets/js/236.27ed9b91.js"><link rel="prefetch" href="/docs/next/assets/js/237.96407852.js"><link rel="prefetch" href="/docs/next/assets/js/238.1afcee34.js"><link rel="prefetch" href="/docs/next/assets/js/239.0e1729c8.js"><link rel="prefetch" href="/docs/next/assets/js/24.74e1cdb1.js"><link rel="prefetch" href="/docs/next/assets/js/240.0a2b169c.js"><link rel="prefetch" href="/docs/next/assets/js/241.aa13395e.js"><link rel="prefetch" href="/docs/next/assets/js/242.8f8eccc9.js"><link rel="prefetch" href="/docs/next/assets/js/243.48012e71.js"><link rel="prefetch" href="/docs/next/assets/js/244.cc7e5f71.js"><link rel="prefetch" href="/docs/next/assets/js/245.6596ac5d.js"><link rel="prefetch" href="/docs/next/assets/js/246.d35395a0.js"><link rel="prefetch" href="/docs/next/assets/js/247.0b0373ff.js"><link rel="prefetch" href="/docs/next/assets/js/248.37fa605a.js"><link rel="prefetch" href="/docs/next/assets/js/249.18983e35.js"><link rel="prefetch" href="/docs/next/assets/js/25.1ec18ce8.js"><link rel="prefetch" href="/docs/next/assets/js/250.01c032f1.js"><link rel="prefetch" href="/docs/next/assets/js/251.a9f45647.js"><link rel="prefetch" href="/docs/next/assets/js/252.fdda4827.js"><link rel="prefetch" href="/docs/next/assets/js/253.3d26ab69.js"><link rel="prefetch" href="/docs/next/assets/js/254.a1f8b18d.js"><link rel="prefetch" href="/docs/next/assets/js/255.bde6fa8f.js"><link rel="prefetch" href="/docs/next/assets/js/256.d62b2908.js"><link rel="prefetch" href="/docs/next/assets/js/257.9158249b.js"><link rel="prefetch" href="/docs/next/assets/js/258.75bbfb48.js"><link rel="prefetch" href="/docs/next/assets/js/259.f9cb463a.js"><link rel="prefetch" href="/docs/next/assets/js/26.fd6b425f.js"><link rel="prefetch" href="/docs/next/assets/js/260.c74ab442.js"><link rel="prefetch" href="/docs/next/assets/js/261.ef5a63c2.js"><link rel="prefetch" href="/docs/next/assets/js/27.bb21a5ac.js"><link rel="prefetch" href="/docs/next/assets/js/28.324bfce6.js"><link rel="prefetch" href="/docs/next/assets/js/29.23fe84aa.js"><link rel="prefetch" href="/docs/next/assets/js/30.01f4c09f.js"><link rel="prefetch" href="/docs/next/assets/js/31.875081a0.js"><link rel="prefetch" href="/docs/next/assets/js/32.dcd3ceca.js"><link rel="prefetch" href="/docs/next/assets/js/33.5e63cad5.js"><link rel="prefetch" href="/docs/next/assets/js/34.bceed015.js"><link rel="prefetch" href="/docs/next/assets/js/35.2415aafe.js"><link rel="prefetch" href="/docs/next/assets/js/36.6098ab9b.js"><link rel="prefetch" href="/docs/next/assets/js/37.68a3e72f.js"><link rel="prefetch" href="/docs/next/assets/js/38.000173ad.js"><link rel="prefetch" href="/docs/next/assets/js/39.32d13090.js"><link rel="prefetch" href="/docs/next/assets/js/4.7b1ba515.js"><link rel="prefetch" href="/docs/next/assets/js/40.2608d554.js"><link rel="prefetch" href="/docs/next/assets/js/41.532fe939.js"><link rel="prefetch" href="/docs/next/assets/js/42.480061d6.js"><link rel="prefetch" href="/docs/next/assets/js/43.2062f710.js"><link rel="prefetch" href="/docs/next/assets/js/44.e58d0498.js"><link rel="prefetch" href="/docs/next/assets/js/45.5131ac54.js"><link rel="prefetch" href="/docs/next/assets/js/46.bb1886c3.js"><link rel="prefetch" href="/docs/next/assets/js/47.bcfee47e.js"><link rel="prefetch" href="/docs/next/assets/js/48.8d8d26ab.js"><link rel="prefetch" href="/docs/next/assets/js/49.417b73cb.js"><link rel="prefetch" href="/docs/next/assets/js/5.5f1e37ab.js"><link rel="prefetch" href="/docs/next/assets/js/50.77867f04.js"><link rel="prefetch" href="/docs/next/assets/js/51.132570ed.js"><link rel="prefetch" href="/docs/next/assets/js/52.39656457.js"><link rel="prefetch" href="/docs/next/assets/js/53.f401b7bf.js"><link rel="prefetch" href="/docs/next/assets/js/54.b99461aa.js"><link rel="prefetch" href="/docs/next/assets/js/55.884e9434.js"><link rel="prefetch" href="/docs/next/assets/js/56.d74cdeab.js"><link rel="prefetch" href="/docs/next/assets/js/57.86bebdef.js"><link rel="prefetch" href="/docs/next/assets/js/58.bb14488f.js"><link rel="prefetch" href="/docs/next/assets/js/59.48115ecf.js"><link rel="prefetch" href="/docs/next/assets/js/6.fded0504.js"><link rel="prefetch" href="/docs/next/assets/js/60.a45f22c2.js"><link rel="prefetch" href="/docs/next/assets/js/61.4ec02286.js"><link rel="prefetch" href="/docs/next/assets/js/62.fc0046b0.js"><link rel="prefetch" href="/docs/next/assets/js/63.f606a653.js"><link rel="prefetch" href="/docs/next/assets/js/64.7afdac3e.js"><link rel="prefetch" href="/docs/next/assets/js/65.63eb447e.js"><link rel="prefetch" href="/docs/next/assets/js/66.27668122.js"><link rel="prefetch" href="/docs/next/assets/js/67.585f2fc7.js"><link rel="prefetch" href="/docs/next/assets/js/68.99cd4fab.js"><link rel="prefetch" href="/docs/next/assets/js/69.31dc4728.js"><link rel="prefetch" href="/docs/next/assets/js/7.7f7e29fb.js"><link rel="prefetch" href="/docs/next/assets/js/70.62172d1b.js"><link rel="prefetch" href="/docs/next/assets/js/71.8e905e6d.js"><link rel="prefetch" href="/docs/next/assets/js/72.0e7ece27.js"><link rel="prefetch" href="/docs/next/assets/js/73.8e4354c0.js"><link rel="prefetch" href="/docs/next/assets/js/74.e622ba99.js"><link rel="prefetch" href="/docs/next/assets/js/75.cd884781.js"><link rel="prefetch" href="/docs/next/assets/js/76.d51b9168.js"><link rel="prefetch" href="/docs/next/assets/js/77.eda9ccc1.js"><link rel="prefetch" href="/docs/next/assets/js/78.ae4cafc3.js"><link rel="prefetch" href="/docs/next/assets/js/79.8904295a.js"><link rel="prefetch" href="/docs/next/assets/js/8.b36085f7.js"><link rel="prefetch" href="/docs/next/assets/js/80.a68f1097.js"><link rel="prefetch" href="/docs/next/assets/js/81.08840d97.js"><link rel="prefetch" href="/docs/next/assets/js/82.f808225e.js"><link rel="prefetch" href="/docs/next/assets/js/83.d0175ebd.js"><link rel="prefetch" href="/docs/next/assets/js/84.4584216a.js"><link rel="prefetch" href="/docs/next/assets/js/85.42fee9fd.js"><link rel="prefetch" href="/docs/next/assets/js/86.aa2074f4.js"><link rel="prefetch" href="/docs/next/assets/js/87.11751fe1.js"><link rel="prefetch" href="/docs/next/assets/js/88.24f73489.js"><link rel="prefetch" href="/docs/next/assets/js/89.a9f679a2.js"><link rel="prefetch" href="/docs/next/assets/js/9.5bb8c761.js"><link rel="prefetch" href="/docs/next/assets/js/90.4f5526cd.js"><link rel="prefetch" href="/docs/next/assets/js/91.69b70c8d.js"><link rel="prefetch" href="/docs/next/assets/js/92.36a9a9f5.js"><link rel="prefetch" href="/docs/next/assets/js/93.2b39c149.js"><link rel="prefetch" href="/docs/next/assets/js/94.00b482e7.js"><link rel="prefetch" href="/docs/next/assets/js/95.ee8c57df.js"><link rel="prefetch" href="/docs/next/assets/js/96.fc54ce86.js"><link rel="prefetch" href="/docs/next/assets/js/97.2bab6d5b.js"><link rel="prefetch" href="/docs/next/assets/js/98.c38195cf.js"><link rel="prefetch" href="/docs/next/assets/js/99.009853cb.js">
<link rel="stylesheet" href="/docs/next/assets/css/0.styles.32b47955.css">
</head>
<body>
<div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/docs/next/" class="home-link router-link-active"><img src="/docs/next/favicon.ico" alt="Chart.js" class="logo"> <span class="site-name can-hide">Chart.js</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/docs/next/" class="nav-link">
Home
</a></div><div class="nav-item"><a href="/docs/next/api/" class="nav-link">
API
</a></div><div class="nav-item"><a href="/docs/next/samples/" class="nav-link">
Samples
</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Community Menu" class="dropdown-title"><span class="title">Ecosystem</span> <span class="arrow down"></span></button> <button type="button" aria-label="Community Menu" class="mobile-dropdown-title"><span class="title">Ecosystem</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/chartjs/awesome" target="_blank" rel="noopener noreferrer" class="nav-link external">
Awesome
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li><li class="dropdown-item"><!----> <a href="https://chartjs-slack.herokuapp.com/" target="_blank" rel="noopener noreferrer" class="nav-link external">
Slack
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li><li class="dropdown-item"><!----> <a href="https://stackoverflow.com/questions/tagged/chart.js" target="_blank" rel="noopener noreferrer" class="nav-link external">
Stack Overflow
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li></ul></div></div> <a href="https://github.com/chartjs/Chart.js" target="_blank" rel="noopener noreferrer" class="repo-link">
GitHub
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></nav></div></header> <div class="sidebar-mask"></div> <aside class="sidebar"><nav class="nav-links"><div class="nav-item"><a href="/docs/next/" class="nav-link">
Home
</a></div><div class="nav-item"><a href="/docs/next/api/" class="nav-link">
API
</a></div><div class="nav-item"><a href="/docs/next/samples/" class="nav-link">
Samples
</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Community Menu" class="dropdown-title"><span class="title">Ecosystem</span> <span class="arrow down"></span></button> <button type="button" aria-label="Community Menu" class="mobile-dropdown-title"><span class="title">Ecosystem</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/chartjs/awesome" target="_blank" rel="noopener noreferrer" class="nav-link external">
Awesome
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li><li class="dropdown-item"><!----> <a href="https://chartjs-slack.herokuapp.com/" target="_blank" rel="noopener noreferrer" class="nav-link external">
Slack
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li><li class="dropdown-item"><!----> <a href="https://stackoverflow.com/questions/tagged/chart.js" target="_blank" rel="noopener noreferrer" class="nav-link external">
Stack Overflow
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li></ul></div></div> <a href="https://github.com/chartjs/Chart.js" target="_blank" rel="noopener noreferrer" class="repo-link">
GitHub
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></nav> <ul class="sidebar-links"><li><a href="/docs/next/" aria-current="page" class="sidebar-link">Chart.js</a></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>Getting Started</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>General</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading open"><span>Configuration</span> <span class="arrow down"></span></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/docs/next/configuration/" aria-current="page" class="sidebar-link">Configuration</a></li><li><a href="/docs/next/configuration/animations.html" class="sidebar-link">Animations</a></li><li><a href="/docs/next/configuration/canvas-background.html" aria-current="page" class="active sidebar-link">Canvas background</a></li><li><a href="/docs/next/configuration/decimation.html" class="sidebar-link">Data Decimation</a></li><li><a href="/docs/next/configuration/device-pixel-ratio.html" class="sidebar-link">Device Pixel Ratio</a></li><li><a href="/docs/next/configuration/elements.html" class="sidebar-link">Elements</a></li><li><a href="/docs/next/configuration/interactions.html" class="sidebar-link">Interactions</a></li><li><a href="/docs/next/configuration/layout.html" class="sidebar-link">Layout</a></li><li><a href="/docs/next/configuration/legend.html" class="sidebar-link">Legend</a></li><li><a href="/docs/next/configuration/locale.html" class="sidebar-link">Locale</a></li><li><a href="/docs/next/configuration/responsive.html" class="sidebar-link">Responsive Charts</a></li><li><a href="/docs/next/configuration/subtitle.html" class="sidebar-link">Subtitle</a></li><li><a href="/docs/next/configuration/title.html" class="sidebar-link">Title</a></li><li><a href="/docs/next/configuration/tooltip.html" class="sidebar-link">Tooltip</a></li></ul></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>Chart Types</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>Axes</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>Developers</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>Migration</span> <span class="arrow right"></span></p> <!----></section></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="canvas-background"><a href="#canvas-background" class="header-anchor">#</a> Canvas background</h1> <p>In some use cases you would want a background image or color over the whole canvas. There is no built-in support for this, the way you can achieve this is by writing a custom plugin.</p> <p>In the two example plugins underneath here you can see how you can draw a color or image to the canvas as background. This way of giving the chart a background is only necessary if you want to export the chart with that specific background.
For normal use you can set the background more easily with <a href="https://www.w3schools.com/cssref/css3_pr_background.asp" target="_blank" rel="noopener noreferrer">CSS<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a>.</p> <div class="tabs-component"><ul role="tablist" class="tabs-component-tabs"></ul> <div class="tabs-component-panels"><section aria-hidden="true" id="color" role="tabpanel" class="tabs-component-panel" style="display:none;"><div class="chart-editor" data-v-182ba87c><div class="chart-view" data-v-182ba87c><canvas></canvas></div> <div class="chart-actions" data-v-538f7c00 data-v-182ba87c></div> <div class="code-editor" data-v-5e43c8e8 data-v-182ba87c><div class="code-editor-header" data-v-5e43c8e8><div class="code-editor-tabs" data-v-5e43c8e8><button class="code-editor-tab active" data-v-5e43c8e8>
config
</button><button class="code-editor-tab" data-v-5e43c8e8>
setup
</button><button class="code-editor-tab" data-v-5e43c8e8>
plugin
</button></div> <div class="code-editor-tools" data-v-5e43c8e8><!----> <a href="https://github.com/chartjs/Chart.js/blob/master/docs/configuration/canvas-background.md" title="View on GitHub" target="_blank" class="code-editor-tool fab fa-github fa-lg" data-v-5e43c8e8></a></div></div> <div class="code-editor-views" data-v-5e43c8e8><div class="editor-textarea ps" data-v-596071d2 data-v-5e43c8e8><div class="editor-textarea-content" data-v-596071d2><div class="prism-editor-wrapper" data-v-596071d2><div class="prism-editor__container"><textarea spellCheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">const config = {
type: 'doughnut',
data: data,
options: {
plugins: {
customCanvasBackgroundColor: {
color: 'lightGreen',
}
}
},
plugins: [plugin],
};</textarea><pre data-testid="preview" class="prism-editor__editor"><span class="token keyword">const</span> config <span class="token operator">=</span> <span class="token punctuation">{</span>
<span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'doughnut'</span><span class="token punctuation">,</span>
<span class="token literal-property property">data</span><span class="token operator">:</span> data<span class="token punctuation">,</span>
<span class="token literal-property property">options</span><span class="token operator">:</span> <span class="token punctuation">{</span>
<span class="token literal-property property">plugins</span><span class="token operator">:</span> <span class="token punctuation">{</span>
<span class="token literal-property property">customCanvasBackgroundColor</span><span class="token operator">:</span> <span class="token punctuation">{</span>
<span class="token literal-property property">color</span><span class="token operator">:</span> <span class="token string">'lightGreen'</span><span class="token punctuation">,</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span><span class="token punctuation">,</span>
<span class="token literal-property property">plugins</span><span class="token operator">:</span> <span class="token punctuation">[</span>plugin<span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token punctuation">}</span><span class="token punctuation">;</span><br /></pre></div></div></div></div><div class="editor-textarea ps" style="display:none;" data-v-596071d2 data-v-5e43c8e8><div class="editor-textarea-content" data-v-596071d2><div class="prism-editor-wrapper" data-v-596071d2><div class="prism-editor__container"><textarea spellCheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">const data = {
labels: [
'Red',
'Blue',
'Yellow'
],
datasets: [{
label: 'My First Dataset',
data: [300, 50, 100],
backgroundColor: [
'rgb(255, 99, 132)',
'rgb(54, 162, 235)',
'rgb(255, 205, 86)'
],
hoverOffset: 4
}]
};</textarea><pre data-testid="preview" class="prism-editor__editor"><span class="token keyword">const</span> data <span class="token operator">=</span> <span class="token punctuation">{</span>
<span class="token literal-property property">labels</span><span class="token operator">:</span> <span class="token punctuation">[</span>
<span class="token string">'Red'</span><span class="token punctuation">,</span>
<span class="token string">'Blue'</span><span class="token punctuation">,</span>
<span class="token string">'Yellow'</span>
<span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token literal-property property">datasets</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">{</span>
<span class="token literal-property property">label</span><span class="token operator">:</span> <span class="token string">'My First Dataset'</span><span class="token punctuation">,</span>
<span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">300</span><span class="token punctuation">,</span> <span class="token number">50</span><span class="token punctuation">,</span> <span class="token number">100</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token literal-property property">backgroundColor</span><span class="token operator">:</span> <span class="token punctuation">[</span>
<span class="token string">'rgb(255, 99, 132)'</span><span class="token punctuation">,</span>
<span class="token string">'rgb(54, 162, 235)'</span><span class="token punctuation">,</span>
<span class="token string">'rgb(255, 205, 86)'</span>
<span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token literal-property property">hoverOffset</span><span class="token operator">:</span> <span class="token number">4</span>
<span class="token punctuation">}</span><span class="token punctuation">]</span>
<span class="token punctuation">}</span><span class="token punctuation">;</span><br /></pre></div></div></div></div><div class="editor-textarea ps" style="display:none;" data-v-596071d2 data-v-5e43c8e8><div class="editor-textarea-content" data-v-596071d2><div class="prism-editor-wrapper" data-v-596071d2><div class="prism-editor__container"><textarea spellCheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">// Note: changes to the plugin code is not reflected to the chart, because the plugin is loaded at chart construction time and editor changes only trigger an chart.update().
const plugin = {
id: 'customCanvasBackgroundColor',
beforeDraw: (chart, args, options) => {
const {ctx} = chart;
ctx.save();
ctx.globalCompositeOperation = 'destination-over';
ctx.fillStyle = options.color || '#99ffff';
ctx.fillRect(0, 0, chart.width, chart.height);
ctx.restore();
}
};</textarea><pre data-testid="preview" class="prism-editor__editor"><span class="token comment">// Note: changes to the plugin code is not reflected to the chart, because the plugin is loaded at chart construction time and editor changes only trigger an chart.update().</span>
<span class="token keyword">const</span> plugin <span class="token operator">=</span> <span class="token punctuation">{</span>
<span class="token literal-property property">id</span><span class="token operator">:</span> <span class="token string">'customCanvasBackgroundColor'</span><span class="token punctuation">,</span>
<span class="token function-variable function">beforeDraw</span><span class="token operator">:</span> <span class="token punctuation">(</span><span class="token parameter">chart<span class="token punctuation">,</span> args<span class="token punctuation">,</span> options</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
<span class="token keyword">const</span> <span class="token punctuation">{</span>ctx<span class="token punctuation">}</span> <span class="token operator">=</span> chart<span class="token punctuation">;</span>
ctx<span class="token punctuation">.</span><span class="token function">save</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
ctx<span class="token punctuation">.</span>globalCompositeOperation <span class="token operator">=</span> <span class="token string">'destination-over'</span><span class="token punctuation">;</span>
ctx<span class="token punctuation">.</span>fillStyle <span class="token operator">=</span> options<span class="token punctuation">.</span>color <span class="token operator">||</span> <span class="token string">'#99ffff'</span><span class="token punctuation">;</span>
ctx<span class="token punctuation">.</span><span class="token function">fillRect</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> chart<span class="token punctuation">.</span>width<span class="token punctuation">,</span> chart<span class="token punctuation">.</span>height<span class="token punctuation">)</span><span class="token punctuation">;</span>
ctx<span class="token punctuation">.</span><span class="token function">restore</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span><span class="token punctuation">;</span><br /></pre></div></div></div></div></div></div></div></section> <section aria-hidden="true" id="image" role="tabpanel" class="tabs-component-panel" style="display:none;"><div class="chart-editor" data-v-182ba87c><div class="chart-view" data-v-182ba87c><canvas></canvas></div> <div class="chart-actions" data-v-538f7c00 data-v-182ba87c></div> <div class="code-editor" data-v-5e43c8e8 data-v-182ba87c><div class="code-editor-header" data-v-5e43c8e8><div class="code-editor-tabs" data-v-5e43c8e8><button class="code-editor-tab active" data-v-5e43c8e8>
config
</button><button class="code-editor-tab" data-v-5e43c8e8>
setup
</button><button class="code-editor-tab" data-v-5e43c8e8>
plugin
</button></div> <div class="code-editor-tools" data-v-5e43c8e8><!----> <a href="https://github.com/chartjs/Chart.js/blob/master/docs/configuration/canvas-background.md" title="View on GitHub" target="_blank" class="code-editor-tool fab fa-github fa-lg" data-v-5e43c8e8></a></div></div> <div class="code-editor-views" data-v-5e43c8e8><div class="editor-textarea ps" data-v-596071d2 data-v-5e43c8e8><div class="editor-textarea-content" data-v-596071d2><div class="prism-editor-wrapper" data-v-596071d2><div class="prism-editor__container"><textarea spellCheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">const config = {
type: 'doughnut',
data: data,
plugins: [plugin],
};</textarea><pre data-testid="preview" class="prism-editor__editor"><span class="token keyword">const</span> config <span class="token operator">=</span> <span class="token punctuation">{</span>
<span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'doughnut'</span><span class="token punctuation">,</span>
<span class="token literal-property property">data</span><span class="token operator">:</span> data<span class="token punctuation">,</span>
<span class="token literal-property property">plugins</span><span class="token operator">:</span> <span class="token punctuation">[</span>plugin<span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token punctuation">}</span><span class="token punctuation">;</span><br /></pre></div></div></div></div><div class="editor-textarea ps" style="display:none;" data-v-596071d2 data-v-5e43c8e8><div class="editor-textarea-content" data-v-596071d2><div class="prism-editor-wrapper" data-v-596071d2><div class="prism-editor__container"><textarea spellCheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">const data = {
labels: [
'Red',
'Blue',
'Yellow'
],
datasets: [{
label: 'My First Dataset',
data: [300, 50, 100],
backgroundColor: [
'rgb(255, 99, 132)',
'rgb(54, 162, 235)',
'rgb(255, 205, 86)'
],
hoverOffset: 4
}]
};</textarea><pre data-testid="preview" class="prism-editor__editor"><span class="token keyword">const</span> data <span class="token operator">=</span> <span class="token punctuation">{</span>
<span class="token literal-property property">labels</span><span class="token operator">:</span> <span class="token punctuation">[</span>
<span class="token string">'Red'</span><span class="token punctuation">,</span>
<span class="token string">'Blue'</span><span class="token punctuation">,</span>
<span class="token string">'Yellow'</span>
<span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token literal-property property">datasets</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">{</span>
<span class="token literal-property property">label</span><span class="token operator">:</span> <span class="token string">'My First Dataset'</span><span class="token punctuation">,</span>
<span class="token literal-property property">data</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">300</span><span class="token punctuation">,</span> <span class="token number">50</span><span class="token punctuation">,</span> <span class="token number">100</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token literal-property property">backgroundColor</span><span class="token operator">:</span> <span class="token punctuation">[</span>
<span class="token string">'rgb(255, 99, 132)'</span><span class="token punctuation">,</span>
<span class="token string">'rgb(54, 162, 235)'</span><span class="token punctuation">,</span>
<span class="token string">'rgb(255, 205, 86)'</span>
<span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token literal-property property">hoverOffset</span><span class="token operator">:</span> <span class="token number">4</span>
<span class="token punctuation">}</span><span class="token punctuation">]</span>
<span class="token punctuation">}</span><span class="token punctuation">;</span><br /></pre></div></div></div></div><div class="editor-textarea ps" style="display:none;" data-v-596071d2 data-v-5e43c8e8><div class="editor-textarea-content" data-v-596071d2><div class="prism-editor-wrapper" data-v-596071d2><div class="prism-editor__container"><textarea spellCheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" data-gramm="false" placeholder="" data-testid="textarea" class="prism-editor__textarea">// Note: changes to the plugin code is not reflected to the chart, because the plugin is loaded at chart construction time and editor changes only trigger an chart.update().
const image = new Image();
image.src = 'https://www.chartjs.org/img/chartjs-logo.svg';
const plugin = {
id: 'customCanvasBackgroundImage',
beforeDraw: (chart) => {
if (image.complete) {
const ctx = chart.ctx;
const {top, left, width, height} = chart.chartArea;
const x = left + width / 2 - image.width / 2;
const y = top + height / 2 - image.height / 2;
ctx.drawImage(image, x, y);
} else {
image.onload = () => chart.draw();
}
}
};</textarea><pre data-testid="preview" class="prism-editor__editor"><span class="token comment">// Note: changes to the plugin code is not reflected to the chart, because the plugin is loaded at chart construction time and editor changes only trigger an chart.update().</span>
<span class="token keyword">const</span> image <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Image</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
image<span class="token punctuation">.</span>src <span class="token operator">=</span> <span class="token string">'https://www.chartjs.org/img/chartjs-logo.svg'</span><span class="token punctuation">;</span>
<span class="token keyword">const</span> plugin <span class="token operator">=</span> <span class="token punctuation">{</span>
<span class="token literal-property property">id</span><span class="token operator">:</span> <span class="token string">'customCanvasBackgroundImage'</span><span class="token punctuation">,</span>
<span class="token function-variable function">beforeDraw</span><span class="token operator">:</span> <span class="token punctuation">(</span><span class="token parameter">chart</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span>image<span class="token punctuation">.</span>complete<span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">const</span> ctx <span class="token operator">=</span> chart<span class="token punctuation">.</span>ctx<span class="token punctuation">;</span>
<span class="token keyword">const</span> <span class="token punctuation">{</span>top<span class="token punctuation">,</span> left<span class="token punctuation">,</span> width<span class="token punctuation">,</span> height<span class="token punctuation">}</span> <span class="token operator">=</span> chart<span class="token punctuation">.</span>chartArea<span class="token punctuation">;</span>
<span class="token keyword">const</span> x <span class="token operator">=</span> left <span class="token operator">+</span> width <span class="token operator">/</span> <span class="token number">2</span> <span class="token operator">-</span> image<span class="token punctuation">.</span>width <span class="token operator">/</span> <span class="token number">2</span><span class="token punctuation">;</span>
<span class="token keyword">const</span> y <span class="token operator">=</span> top <span class="token operator">+</span> height <span class="token operator">/</span> <span class="token number">2</span> <span class="token operator">-</span> image<span class="token punctuation">.</span>height <span class="token operator">/</span> <span class="token number">2</span><span class="token punctuation">;</span>
ctx<span class="token punctuation">.</span><span class="token function">drawImage</span><span class="token punctuation">(</span>image<span class="token punctuation">,</span> x<span class="token punctuation">,</span> y<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span>
image<span class="token punctuation">.</span><span class="token function-variable function">onload</span> <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=></span> chart<span class="token punctuation">.</span><span class="token function">draw</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span><span class="token punctuation">;</span><br /></pre></div></div></div></div></div></div></div></section></div></div></div> <footer class="page-edit"><!----> <div class="last-updated"><span class="prefix">Last Updated:</span> <span class="time">11/13/2022, 8:16:32 PM</span></div></footer> <div class="page-nav"><p class="inner"><span class="prev">
←
<a href="/docs/next/configuration/animations.html" class="prev">
Animations
</a></span> <span class="next"><a href="/docs/next/configuration/decimation.html">
Data Decimation
</a>
→
</span></p></div> </main></div><div class="global-ui"></div></div>
<script src="/docs/next/assets/js/app.79ca5bdb.js" defer></script><script src="/docs/next/assets/js/2.5288603d.js" defer></script><script src="/docs/next/assets/js/154.dcc1bf83.js" defer></script><script src="/docs/next/assets/js/3.231e388d.js" defer></script>
</body>
</html>