vislite
Version:
灵活、快速、简单的数据可视化交互式跨端前端库
43 lines (39 loc) • 1.63 kB
text/typescript
// 获取一组循环色彩
export default function (num: number, alpha: number = 1, colorsFactory?: (alpha: number) => Array<string>) {
// 颜色集合
const colorList = colorsFactory ? colorsFactory(alpha) : [
'rgba(84,112,198,' + alpha + ")", 'rgba(145,204,117,' + alpha + ")",
'rgba(250,200,88,' + alpha + ")", 'rgba(238,102,102,' + alpha + ")",
'rgba(115,192,222,' + alpha + ")", 'rgba(59,162,114,' + alpha + ")",
'rgba(252,132,82,' + alpha + ")", 'rgba(154,96,180,' + alpha + ")",
'rgba(234,124,204,' + alpha + ")"
]
let colors: string[] = []
// 根据情况返回颜色数组
if (num <= colorList.length) {
// 这种情况就不需要任何处理
return colorList
} else {
// 如果正好是集合长度的倍数
if (num % colorList.length == 0) {
// 将颜色数组循环加入后再返回
for (let i = 0; i < (num / colorList.length); i++) {
colors = colors.concat(colorList)
}
} else {
for (let j = 1; j < (num / colorList.length); j++) {
colors = colors.concat(colorList)
}
// 防止最后一个颜色和第一个颜色重复
if (num % colorList.length == 1) {
colors = colors.concat(colorList[4])
} else {
for (let k = 0; k < num % colorList.length; k++) {
colors = colors.concat(colorList[k])
}
}
}
}
// 返回结果
return colors
}