Hexo部落格中插入 Chart 動態圖表
阿新 • • 發佈:2020-08-11
該文基本(全部)來自於chatjs
中文文件
由於使用pjax,導致頁面需要二次重新整理才會顯示錶格,故引入了自動重新整理的JS,但這樣會導致回退標籤失效
背景
今天在谷歌上逛部落格時,突然發現shen-yu
大佬根據chatjs
寫了一個Hexo外掛,出於興趣,打算使用並記錄該外掛的效果。
shen-yu大佬
chatjs中文文件
由於外掛的安裝和圖表的使用上面兩個連結已介紹得足夠詳細,本人只做一些圖表的演示,並充當一個函式,實現程式碼的複用(手動狗頭)。
圖表
折線圖
效果
示例用法
{% chart 90% 300 %} //其中 chart 是標籤名,endchart 是結束標籤,不需要更改,可以通過設定 options 裡面的 aspectRatio 屬性來調整圖表的寬高比例,預設 width 為 100%,height 為 300px。 { type: 'line', data: { // 折線圖資料 labels: ['8.4', '8.5', '8.6', '8.7', '8.8', '8.9', '8.10'], // 橫座標 datasets: [{ // 縱座標變數名稱 label: 'My First dataset', lineTension: 0, borderColor: 'rgb(255, 99, 132)', // 線條顏色 data: [0, 10, 5, 2, 20, 30, 45] // 縱座標 }] }, options: { responsive: true, title: { display: true, text: 'Chart.js 折線圖' // 圖表名稱 } } } {% endchart %}
相關屬性
名稱 | 型別 | 描述 |
---|---|---|
backgroundColor |
Color/Color[] |
線條背景色 |
borderColor |
Color/Color[] |
線條顏色 |
borderWidth |
Number/Number[] |
線的寬度(以畫素為單位) |
borderDash |
Number[] |
破折號的長度和間距。 參考 MDN |
borderDashOffset |
Number |
偏移量 參考 MDN |
borderCapStyle |
String |
線帽樣式 參考 MDN |
borderJoinStyle |
String |
線連線風格 參考 MDN |
cubicInterpolationMode |
String |
離散的點之間的連線方式 |
fill |
Boolean/String |
折線區域的填充方式 |
label |
String |
在圖例和工具提示中顯示的資料集的標籤。 |
lineTension |
Number |
貝塞爾曲線張力。設定為 0 繪製直線。如果使用單調立方插值,則忽略此選項。 |
pointBackgroundColor |
Color/Color[] |
點的填充色 |
pointBorderColor |
Color/Color[] |
點的邊框色 |
pointBorderWidth |
Number/Number[] |
點邊框寬度(以畫素為單位) |
pointRadius |
Number/Number[] |
點的半徑。如果設定為 0,則不顯示。 |
pointStyle |
String/String[]/Image/Image[] |
資料點的樣式 |
pointHitRadius |
Number/Number[] |
對滑鼠事件作出響應的非顯示點的畫素大小。 |
pointHoverBackgroundColor |
Color/Color[] |
滑鼠懸浮時點背景顏色。 |
pointHoverBorderColor |
Color/Color[] |
滑鼠懸浮時點的邊框色 |
pointHoverBorderWidth |
Number/Number[] |
滑鼠懸浮時點的邊框寬度 |
pointHoverRadius |
Number/Number[] |
滑鼠懸浮時點的半徑大小 |
showLine |
Boolean |
如果設定 false,則不會為此資料集繪製線條。 |
spanGaps |
Boolean |
如果為 true,則會在沒有或為空資料的點之間繪製線條。如果為 false,則帶有 NaN 資料的點會產生一箇中斷 |
steppedLine |
Boolean/String |
是否顯示為階梯線 |
xAxisID |
String |
繪製此資料集的 x 軸的 ID。如果未指定,則預設為第一個找到的 x 軸的 ID。 |
yAxisID |
String |
繪製該資料集的 y 軸的 ID。如果未指定,則預設為第一個找到的 y 軸的 ID。 |
柱狀圖
效果·垂直柱狀圖
示例用法·垂直柱狀圖
{% chart 90% 300 %}
{
"type":"bar",
"data":{
"labels":["January","February","March","April","May","June","July"],
"datasets":[{
"label":"My First Dataset",
"data":[65,59,80,81,56,55,40],
"fill":false,
"backgroundColor":["rgba(255, 99, 132, 0.2)","rgba(255, 159, 64, 0.2)","rgba(255, 205, 86, 0.2)","rgba(75, 192, 192, 0.2)","rgba(54, 162, 235, 0.2)","rgba(153, 102, 255, 0.2)","rgba(201, 203, 207, 0.2)"],
"borderColor":["rgb(255, 99, 132)","rgb(255, 159, 64)","rgb(255, 205, 86)","rgb(75, 192, 192)","rgb(54, 162, 235)","rgb(153, 102, 255)","rgb(201, 203, 207)"],
"borderWidth":1
}]
},
"options":{
"scales":{
"yAxes":[{
"ticks":{
"beginAtZero":true
}
}]
}
}
}
{% endchart %}
效果·水平柱狀圖
示例用法·水平柱狀圖
{% chart 90% 300 %}
{
"type":"horizontalBar", // 水平柱狀圖
"data":{
"labels":["January","February","March","April","May","June","July"],
"datasets":[{
"label":"My First Dataset",
"data":[65,59,80,81,56,55,40],
"fill":false,
"backgroundColor":["rgba(255, 99, 132, 0.2)","rgba(255, 159, 64, 0.2)","rgba(255, 205, 86, 0.2)","rgba(75, 192, 192, 0.2)","rgba(54, 162, 235, 0.2)","rgba(153, 102, 255, 0.2)","rgba(201, 203, 207, 0.2)"],
"borderColor":["rgb(255, 99, 132)","rgb(255, 159, 64)","rgb(255, 205, 86)","rgb(75, 192, 192)","rgb(54, 162, 235)","rgb(153, 102, 255)","rgb(201, 203, 207)"],
"borderWidth":1
}]
},
"options":{
"scales":{
"xAxes":[{
"ticks":{
"beginAtZero":true
}
}]
}
}
}
{% endchart %}
相關屬性
名稱 | 型別 | 描述 |
---|---|---|
label |
String |
在圖例和工具提示中顯示的資料集標籤 |
xAxisID |
String |
繪製此資料集的 x 軸的 ID。如果未指定,則預設為第一個找到的 x 軸的 ID 。 |
yAxisID |
String |
繪製該資料集的 y 軸的 ID。如果未指定,則預設為第一個找到的 y 軸的 ID。 |
backgroundColor |
Color/Color[] |
柱狀/條形圖填充色。 |
borderColor |
Color/Color[] |
邊框色 |
borderWidth |
Number/Number[] |
邊框寬度(以畫素為單位) |
borderSkipped |
String |
不繪製邊框 |
hoverBackgroundColor |
Color/Color[] |
懸浮時的填充色 |
hoverBorderColor |
Color/Color[] |
懸浮時的邊框色 |
hoverBorderWidth |
Number/Number[] |
懸浮時邊框寬度 |
雷達圖
效果
示例用法
{% chart 90% 300 %}
{
"type":"radar",
"data":{
"labels":["Eating","Drinking","Sleeping","Designing","Coding","Cycling","Running"],
"datasets":[
{
"label":"My First Dataset",
"data":[65,59,90,81,56,55,40],
"fill":true,
"backgroundColor":"rgba(255, 99, 132, 0.2)",
"borderColor":"rgb(255, 99, 132)",
"pointBackgroundColor":"rgb(255, 99, 132)",
"pointBorderColor":"#fff",
"pointHoverBackgroundColor":"#fff",
"pointHoverBorderColor":"rgb(255, 99, 132)"
},
{
"label":"My Second Dataset",
"data":[28,48,40,19,96,27,100],
"fill":true,
"backgroundColor":"rgba(54, 162, 235, 0.2)",
"borderColor":"rgb(54, 162, 235)",
"pointBackgroundColor":"rgb(54, 162, 235)",
"pointBorderColor":"#fff",
"pointHoverBackgroundColor":"#fff",
"pointHoverBorderColor":"rgb(54, 162, 235)"
}
]
},
"options":{
"elements":{
"line":{
"tension":0,
"borderWidth":3
}
}
}
}
{% endchart %}
相關屬性
名稱 | 型別 | 描述 |
---|---|---|
label |
String |
圖例和工具提示中的資料集的標籤名 |
backgroundColor |
Color/Color[] |
填充色 |
borderColor |
Color/Color[] |
線的顏色 |
borderWidth |
Number/Number[] |
線寬度(以畫素為單位) |
borderDash |
Number[] |
破折號的長度和間距 參考 MDN |
borderDashOffset |
Number |
偏移量 參考 MDN |
borderCapStyle |
String |
線冒樣式 參考 MDN |
borderJoinStyle |
String |
Line joint 樣式 參考 MDN |
fill |
Boolean/String |
區域填充色 |
lineTension |
Number |
貝塞爾曲線張力。0 為直線。 |
pointBackgroundColor |
Color/Color[] |
資料點填充色 |
pointBorderColor |
Color/Color[] |
資料點邊框色 |
pointBorderWidth |
Number/Number[] |
資料點邊框寬度(以畫素為單位) |
pointRadius |
Number/Number[] |
資料點半徑。0 為不顯示點 |
pointStyle |
String/String[]/Image/Image[] |
資料點樣式 |
pointHitRadius |
Number/Number[] |
對滑鼠事件作出響應的非顯示點的畫素大小。 |
pointHoverBackgroundColor |
Color/Color[] |
滑鼠懸浮時,資料點背景顏色 |
pointHoverBorderColor |
Color/Color[] |
滑鼠懸浮時,資料點邊框色 |
pointHoverBorderWidth |
Number/Number[] |
滑鼠懸浮時資料點的邊框寬度 |
pointHoverRadius |
Number/Number[] |
滑鼠懸停時,資料點的半徑大小 |
環狀/餅狀圖
效果·環狀圖
示例用法·環狀圖
{% chart 90% 300 %}
{
"type":"doughnut",
"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)"]
}
]
}
}
{% endchart %}
效果·餅狀圖
示例用法·餅狀圖
{% chart 90% 300 %}
{
"type":"pie",
"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)"]
}
]
}
}
{% endchart %}
相關屬性
名稱 | 型別 | 描述 |
---|---|---|
label |
String |
圖例和提示中顯示的標籤名 |
backgroundColor |
Color[] |
資料集中每個資料區域的填充色 |
borderColor |
Color[] |
邊框色 |
borderWidth |
Number[] |
邊框寬度 |
hoverBackgroundColor |
Color[] |
滑鼠懸浮時的填充色 |
hoverBorderColor |
Color[] |
滑鼠懸浮時邊框色 |
hoverBorderWidth |
Number[] |
滑鼠懸浮時邊框寬度 |
名稱 | 型別 | 預設值 | 描述 |
---|---|---|---|
cutoutPercentage |
Number |
50 - for doughnut, 0 - for pie |
從中間切出的圖表的百分比。 |
rotation |
Number |
-0.5 * Math.PI |
起始角度 |
circumference |
Number |
2 * Math.PI |
允許圖形覆蓋 |
animation.animateRotate |
Boolean |
true |
如果為 true,則圖表將使用旋轉動畫進行動畫。該屬性在options.animation 物件中。 |
animation.animateScale |
Boolean |
false |
如果為 true,則將動畫從中心向外縮放圖表。 |
極地圖
效果
示例用法
{% chart 90% 300 %}
{
"type":"polarArea",
"data":{
"labels":["Red","Green","Yellow","Grey","Blue"],
"datasets":[
{
"label":"My First Dataset",
"data":[11,16,7,3,14],
"backgroundColor":["rgb(255, 99, 132)","rgb(75, 192, 192)","rgb(255, 205, 86)","rgb(201, 203, 207)","rgb(54, 162, 235)"]
}
]
}
}
{% endchart %}
相關屬性
名稱 | 型別 | 描述 |
---|---|---|
label |
String |
在圖例和工具提示中要顯示資料集的標籤 |
backgroundColor |
Color[] |
填充色 |
borderColor |
Color[] |
邊框色 |
borderWidth |
Number[] |
邊框寬度 |
hoverBackgroundColor |
Color[] |
滑鼠懸浮時背景色 |
hoverBorderColor |
Color[] |
滑鼠懸浮時邊框色 |
hoverBorderWidth |
Number[] |
滑鼠懸浮時邊框寬度 |
氣泡圖
效果
示例用法
{% chart 90% 300 %}
{
"type":"bubble",
"data":{
"datasets":[
{
"label":"First Dataset",
"data":[
{"x":20,"y":30,"r":15},{"x":40,"y":10,"r":10},{"x":24,"y":20,"r":10},{"x":28,"y":16,"r":15},{"x":36,"y":12,"r":10}
],
"backgroundColor":"rgb(255, 99, 132)"
}
]
}
}
{% endchart %}
相關屬性
名稱 | 型別 | 可指令碼化 | 可索引 | 預設值 |
---|---|---|---|---|
backgroundColor |
Color |
Yes | Yes | 'rgba(0,0,0,0.1)' |
borderColor |
Color |
Yes | Yes | 'rgba(0,0,0,0.1)' |
borderWidth |
Number |
Yes | Yes | 3 |
data |
Object[] |
- | - | required |
hoverBackgroundColor |
Color |
Yes | Yes | undefined |
hoverBorderColor |
Color |
Yes | Yes | undefined |
hoverBorderWidth |
Number |
Yes | Yes | 1 |
hoverRadius |
Number |
Yes | Yes | 4 |
hitRadius |
Number |
Yes | Yes | 1 |
label |
String |
- | - | undefined |
pointStyle |
String |
Yes | Yes | circle |
radius |
Number |
Yes | Yes | 3 |
每個氣泡的風格可以通過以下屬性進行控制:
名稱 | 描述 |
---|---|
backgroundColor |
七寶背景色 |
borderColor |
氣泡邊框色 |
borderWidth |
氣泡邊框寬度 (以畫素為單位) |
pointStyle |
氣泡形狀樣式 |
radius |
氣泡半徑(以畫素為單位) |
散點圖
效果
示例用法
{% chart 90% 300 %}
{
type:'scatter',
data:{
labels:['January','February','March','April','May','June','July'],
datasets:[
{
label:'My First dataset',
borderColor:'rgb(255, 99, 132)',
backgroundColor:'rgb(255, 99, 132)',
data:[
{x:12,y:45,},{x:12,y:13,},{x:56,y:3,},{x:5,y:87,},{x:43,y:76,},{x:34,y:8,},{x:9,y:53,}
]
},
{
label:'My Second dataset',
borderColor:'rgb(54, 162, 235)',
backgroundColor:'rgb(54, 162, 235)',
data:[
{x:56,y:12,},{x:7,y:12,},{x:87,y:24,},{x:34,y:45,},{x:65,y:27,},{x:8,y:37,},{x:24,y:89,}
]
}
],
options:{
title:{
display:true,
text:'Chart.js Scatter Chart'
},
}
}
}
{% endchart %}
相關屬性
名稱 | 型別 | 描述 |
---|---|---|
borderColor |
Color/Color[] |
點顏色 |
borderWidth |
Number/Number[] |
線的寬度(以畫素為單位) |
borderDash |
Number[] |
破折號的長度和間距。 參考 MDN |
borderDashOffset |
Number |
偏移量 參考 MDN |
borderCapStyle |
String |
線帽樣式 參考 MDN |
borderJoinStyle |
String |
線連線風格 參考 MDN |
cubicInterpolationMode |
String |
離散的點之間的連線方式 |
fill |
Boolean/String |
折線區域的填充方式 |
label |
String |
在圖例和工具提示中顯示的資料集的標籤。 |
lineTension |
Number |
貝塞爾曲線張力。設定為 0 繪製直線。如果使用單調立方插值,則忽略此選項。 |
pointBackgroundColor |
Color/Color[] |
點的填充色 |
pointBorderColor |
Color/Color[] |
點的邊框色 |
pointBorderWidth |
Number/Number[] |
點邊框寬度(以畫素為單位) |
pointRadius |
Number/Number[] |
點的半徑。如果設定為 0,則不顯示。 |
pointStyle |
String/String[]/Image/Image[] |
資料點的樣式 |
pointHitRadius |
Number/Number[] |
對滑鼠事件作出響應的非顯示點的畫素大小。 |
pointHoverBackgroundColor |
Color/Color[] |
滑鼠懸浮時點背景顏色。 |
pointHoverBorderColor |
Color/Color[] |
滑鼠懸浮時點的邊框色 |
pointHoverBorderWidth |
Number/Number[] |
滑鼠懸浮時點的邊框寬度 |
pointHoverRadius |
Number/Number[] |
滑鼠懸浮時點的半徑大小 |
showLine |
Boolean |
如果設定 false,則不會為此資料集繪製線條。 |
spanGaps |
Boolean |
如果為 true,則會在沒有或為空資料的點之間繪製線條。如果為 false,則帶有 NaN 資料的點會產生一箇中斷 |
steppedLine |
Boolean/String |
是否顯示為階梯線 |
xAxisID |
String |
繪製此資料集的 x 軸的 ID。如果未指定,則預設為第一個找到的 x 軸的 ID。 |
yAxisID |
String |
繪製該資料集的 y 軸的 ID。如果未指定,則預設為第一個找到的 y 軸的 ID。 |
區域圖
效果
示例用法
{% chart 90% 300 %}
{
"type":"line",
"data":{
"datasets":[
{
"label":"Area Dataset",
"data":[10,40],
"fill":1, // 填充--->區域圖
"borderColor":"rgb(54, 162, 235)",
"backgroundColor":"rgba(255, 99, 132, 0.2)",
"fill":"origin"
},
]
}
}
{% endchart %}
相關屬性
模式 | 型別 | 值 |
---|---|---|
絕對資料集索引 1 | Number |
1 , 2 , 3 , ... |
相對資料集索引 1 | String |
'-1' , '-2' , '+1' , ... |
邊界 2 | String |
'start' , 'end' , 'origin' |
禁用 3 | Boolean |
false |
混合圖表
效果
示例用法
{% chart 90% 300 %}
{
"type":"bar",
"data":{
"labels":["January","February","March","April"],
"datasets":[
{
"label":"Bar Dataset",
"data":[10,20,30,40],
"borderColor":"rgb(255, 99, 132)",
"backgroundColor":"rgba(255, 99, 132, 0.2)"
},
{
"label":"Line Dataset",
"data":[10,20,30,40],
"type":"line",
"fill":false,
"borderColor":"rgb(54, 162, 235)",
},
{
"label":"Line Dataset2",
"data":[0,30,10,40],
"type":"line",
"fill":false,
"borderColor":"rgb(255, 0, 0)",
}
]
},
"options":{
"scales":{
"yAxes":[
{
"ticks":{
"beginAtZero":true
}
}
]
}
}
}
{% endchart %}
相關屬性
注意運用的Chart各自的屬性即可。
申明
文章基本轉自
shen-yu
大佬{% btn 'https://shen-yu.gitee.io/2020/chartjs/',shen-yu,far fa-hand-point-right,green larger %}
chatjs
中文文件{% btn 'https://chartjs.bootcss.com/docs/getting-started/installation.html',chatjs,far fa-hand-point-right,blue larger %},並非原創,本人只是進行了總結和排版。