Я использую vue-echarts и создал следующий компонент:
<script setup lang = "ts">
import VChart from 'vue-echarts'
import { use } from 'echarts/core'
import { GaugeChart } from 'echarts/charts'
import { CanvasRenderer } from 'echarts/renderers'
use([GaugeChart, CanvasRenderer])
const roundCap = true
const width = 12
const option = {
series: [
{
type: 'gauge',
startAngle: 180,
endAngle: 0,
min: 0,
max: 100,
itemStyle: {
color: {
type: 'linear',
x: 0,
y: 1,
x2: 1,
y2: 1,
colorStops: [
{ offset: 0, color: '#E02F1E' },
{ offset: 0.1, color: '#E53C2B' },
{ offset: 0.2, color: '#ED7936' },
{ offset: 0.3, color: '#F19C3C' },
{ offset: 0.41, color: '#E9AD3C' },
{ offset: 0.52, color: '#E0BF3C' },
{ offset: 0.63, color: '#BCBC33' },
{ offset: 0.72, color: '#75B520' },
{ offset: 0.86, color: '#29AE0C' },
{ offset: 1, color: '#01AA01' }
]
}
},
progress: {
show: true,
roundCap,
width
},
axisLine: {
roundCap,
lineStyle: { width }
},
data: [{ value: 100 }]
}
]
}
</script>
<template>
<VChart :option />
</template>
И когда я использую компонент, вот результат (который выглядит хорошо):
Но когда значение уменьшается, это ужасный результат:
Должно быть чего-то не хватает в конфигурации, знаете как исправить внешний вид?
Редактировать №1
Благодаря мнению разработчиков, я изменил этот фрагмент кода и получил желаемый вид:
itemStyle: {
color: {
type: 'linear',
x: 0,
y: 0,
x2: 100,
y2: 0,
colorStops: [
{ offset: 0, color: '#E02F1E' },
{ offset: 0.1, color: '#E53C2B' },
{ offset: 0.2, color: '#ED7936' },
{ offset: 0.3, color: '#F19C3C' },
{ offset: 0.41, color: '#E9AD3C' },
{ offset: 0.52, color: '#E0BF3C' },
{ offset: 0.63, color: '#BCBC33' },
{ offset: 0.72, color: '#75B520' },
{ offset: 0.86, color: '#29AE0C' },
{ offset: 1, color: '#01AA01' }
],
global: true
}
}





gaugeЯ не знаю, почему colorStops изменяется от 0 до 100% значения датчика, а не от 0 до 100% от всей оси шкалы. И я не знаю, как это изменить.
Но вместо использования процентов вы можете использовать global: true, чтобы установить градиент слева направо от диаграммы (в пикселях). Отрегулируйте значения в соответствии с размером вашей диаграммы.
Вот мой собственный пример в онлайн-редакторе Echarts.
itemStyle: {
color: {
type: 'linear',
x: 200, // the left of the gauge, in px
x2: 900, // the right of the gauge, in px
global: true,
colorStops: [
{ offset: 0, color: '#E02F1E' },
{ offset: 0.1, color: '#E53C2B' },
{ offset: 0.2, color: '#ED7936' },
{ offset: 0.3, color: '#F19C3C' },
{ offset: 0.41, color: '#E9AD3C' },
{ offset: 0.52, color: '#E0BF3C' },
{ offset: 0.63, color: '#BCBC33' },
{ offset: 0.72, color: '#75B520' },
{ offset: 0.86, color: '#29AE0C' },
{ offset: 1, color: '#01AA01' }
]
}
},
Результат :
customЭто может быть сложнее реализовать, но и чище. Этот официальный пример (с использованием серии custom) похож на то, что вы хотите, вам просто нужно настроить несколько вещей.