横向柱状图 data() { return { candidates:[] }; },想让y轴是candidate的名字x轴是id应该怎么写
时间: 2024-05-04 16:22:12 浏览: 74
你可以使用 Vue-chartjs 这个库来绘制横向柱状图。首先,你需要在组件中引入该库:
```javascript
import { Bar } from 'vue-chartjs'
```
然后,在组件中定义一个继承自 Bar 类的子类:
```javascript
export default {
extends: Bar,
data() {
return {
candidates: []
}
},
mounted() {
// 在 mounted 钩子中调用 drawChart 方法
this.drawChart()
},
methods: {
drawChart() {
// 定义数据集
const datasets = this.candidates.map((candidate) => {
return {
label: candidate.name,
data: candidate.votes,
backgroundColor: '#4CAF50',
borderWidth: 1
}
})
// 定义配置项
const options = {
responsive: true,
maintainAspectRatio: false,
scales: {
xAxes: [{
ticks: {
beginAtZero: true
}
}]
}
}
// 调用 Bar 类的 renderChart 方法来绘制图表
this.renderChart({
labels: this.candidates[0].votes.map((vote, index) => {
return 'id' + index
}),
datasets: datasets
}, options)
}
}
}
```
在上面的代码中,我们定义了一个 `drawChart` 方法来生成数据集和配置项,并调用 Bar 类的 `renderChart` 方法来绘制图表。在 `renderChart` 方法中,我们传入了一个包含标签和数据集的对象,以及一个配置项对象。
在标签中,我们将每个标签设置为以 `id` 开头的数字,以匹配你的需求。在数据集中,我们遍历了所有的候选人,并为每个候选人创建了一个数据集。每个数据集都包含了该候选人的名字、投票数以及背景颜色和边框宽度。
最后,在配置项中,我们定义了一个 x 轴的刻度,使其从 0 开始。
至此,你已经完成了横向柱状图的绘制。你可以在组件中使用该图表,如下所示:
```html
<template>
<div>
<bar-chart :candidates="candidates"></bar-chart>
</div>
</template>
<script>
import { Bar } from 'vue-chartjs'
export default {
extends: Bar,
props: {
candidates: {
type: Array,
required: true
}
},
mounted() {
this.drawChart()
},
methods: {
drawChart() {
// ...
}
}
}
</script>
```
在上面的代码中,我们将 `candidates` 数组作为 props 传递给组件,并在组件中定义了 `drawChart` 方法,该方法生成了数据集和配置项,并调用了 Bar 类的 `renderChart` 方法来绘制图表。
阅读全文