vue-chartjsグラフライブラリの配置と使用
公式サイト公式文書はChart.jsとVue.jsを使って簡単で綺麗なグラフです. ギthub/vue-chartjs vue-chartjsはChart.jsに基づいて実現されたvueバージョンです.
npm
npm
npm install vue-chartjs chart.js --save
コンポーネントBar
HorizontalBar
Doughnut
Line
Pie
PolarArea
Radar
Bubble
Scatter
mixins
generateChert
参照import { Bar } from 'vue-chartjs'
export default {
extends: Bar,
mounted () {
this.renderChart(data, options)
}
}
this.render Chart()方法は、Barコンポーネントによって提供され、2つのオブジェクトパラメータを受信する.一つ目はあなたのグラフのデータで、二つ目は配置対象です.この文書では、提供したいオブジェクト構造のChart.js docsを確認します.export default {
extends: Bar,
props: [
'data',
'max',
'min',
],
mounted() {
const {
labels,
data,
bgColors,
} = (this as any)
.data.chartData;
const thisTitle = (this as any).data.label;
const units = (this as any).data.unit && (this as any).data.unit.data.find((i: any) => i);
const tableTitle = this.$t(thisTitle) + '(' + (units) + ')';
// const max = (this as any).data.max;
const maxVal = Number(Math.max.apply(null, this.data.chartData.data)) * 1.2;
const max = Math.ceil(maxVal);
const min = 0;
const datacollection = {
labels,
datasets: [{
backgroundColor: bgColors,
data,
} ],
};
const options: any = {
animation: {
duration: 100,
onComplete: function() {
const chartInstance = (this as any).chart;
const ctx = chartInstance.ctx;
// ctx.font = Chart.helpers.fontString(
// Chart.defaults.global.defaultFontSize,
// Chart.defaults.global.defaultFontStyle,
// Chart.defaults.global.defaultFontFamily
// );
ctx.textAlign = 'center';
// ctx.textBaseline = "bottom";
// ctx.fillStyle = "#F5A623";
(this as any).data.datasets.forEach(function(dataset, i) {
const meta = chartInstance.controller.getDatasetMeta(i);
meta.data.forEach(function(bar, index) {
ctx.fillText(
`${dataset.data[index]}`,
bar._model.x,
bar._model.y - 5,
);
});
});
},
},
bars: {
maxBarThickness: 20,
},
events: ['null'],
responsive: true,
maintainAspectRatio: true,
legend: {
display: false,
position: 'top', //
fullWidth: 'true',
// labels:{ //
// boxWidth:10 ,//
// fontSize:"20", //
// fontStyle:"normal" //
// fontColor:"red" , //
// padding:10 //
// fontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif" //
// usePointStyle:false // (
// fontSize, boxWidth)
//
// }
},
title: {
display: true,
text: tableTitle,
position: 'top',
// fontSize:20, // 12px
// fontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif" //
// fontColor:'#666'
// fontStyle:'bold' //
// padding:10 //
// lineHeight:10 //
},
tooltips: {
enabled: true,
mode: 'point',
},
scales: {
yAxes: [{
stacked: true,
ticks: {
beginAtZero: true,
fontSize: 11,
max,
min,
fontColor: '#9E9E9E',
},
}],
xAxes: [{
barThickness: 18,
ticks: {
fontSize: 13,
fontColor: '#353535',
},
}],
},
};
(this as any)
.renderChart(datacollection, options);
},
};