Skip to content

Latest commit

ย 

History

History
448 lines (380 loc) ยท 13.2 KB

chart-radialBar.md

File metadata and controls

448 lines (380 loc) ยท 13.2 KB

RadialBar ์ฐจํŠธ

์ฐจํŠธ๋ณ„๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” API๋Š” ์ด ๊ฐ€์ด๋“œ์—์„œ ๋‹ค๋ฃจ์ง€ ์•Š๋Š”๋‹ค. ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ API๊ฐ€ ๊ถ๊ธˆํ•˜๋‹ค๋ฉด API ๊ฐ€์ด๋“œ๋ฅผ ์ฐธ๊ณ ํ•˜์ž.

์ฐจํŠธ ์ƒ์„ฑํ•˜๊ธฐ

RadialBar ์ฐจํŠธ์˜ ์ƒ์„ฑ ๋ฐฉ๋ฒ•์€ ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. ์ƒ์„ฑ์ž ํ•จ์ˆ˜์™€ ์ •์  ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ฒฐ๊ณผ๋Š” ๋ชจ๋‘ ์ฐจํŠธ์˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ๋ฐ˜ํ™˜๋œ๋‹ค. ๋งค๊ฐœ ๋ณ€์ˆ˜๋Š” ์ฐจํŠธ๊ฐ€ ๊ทธ๋ ค์ง€๋Š” ์˜์—ญ์ธ HTML ์š”์†Œ el, ๋ฐ์ดํ„ฐ๊ฐ’์ธ data, ์˜ต์…˜๊ฐ’ options๊ฐ€ ๊ฐ์ฒด๋กœ ๋“ค์–ด๊ฐ„๋‹ค. el ๊ฐ’์€ ์ฐจํŠธ์˜ ์ปจํ…Œ์ด๋„ˆ ์˜์—ญ์ด๋ฏ€๋กœ ์ฐจํŠธ ์™ธ์— ๋‹ค๋ฅธ ์š”์†Œ๋“ค์ด ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉด ์ฐจํŠธ์— ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ์Œ์œผ๋กœ ๋น„์–ด์žˆ๋Š” HTML ์š”์†Œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•œ๋‹ค.

import { RadialBarChart } from '@toast-ui/chart';

const chart = new RadialBarChart({el, data, options});

// ํ˜น์€

import Chart from '@toast-ui/chart';

const chart = Chart.radialBarChart({el, data, options});

๊ธฐ๋ณธ ์ฐจํŠธ

๋ฐ์ดํ„ฐ ํƒ€์ž…

categories ๊ฐ’์€ Y์ถ•์˜ ํ‹ฑ์— ๋‚˜ํƒ€๋‚˜๋ฉฐ series ๊ฐ’์€ name๊ณผ data๊ฐ€ ๋ชจ๋‘ ์ž‘์„ฑ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅํ•ด์•ผ ํ•œ๋‹ค. name์€ ๊ฐ๊ฐ์˜ ์‹œ๋ฆฌ์ฆˆ๋ฅผ ๊ตฌ๋ถ„ํ•  ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์œ ์ผํ•œ id๋กœ ์ž‘์„ฑํ•œ๋‹ค.

const data = {
  categories: ['Korea', 'United States', 'Germany', 'Canada', 'Austria'],
  series: [
    {
      name: 'Gold medals',
      data: [132, 105, 92, 73, 64]
    },
    {
      name: 'Silver medals',
      data: [125, 110, 86, 64, 81]
    },
    {
      name: 'Bronze medals',
      data: [111, 90, 60, 62, 87]
    }
  ]
};

radial-bar-basic

์˜ต์…˜

options๋Š” ๊ฐ์ฒด๋กœ ์ž‘์„ฑํ•œ๋‹ค.

type options = {
  chart?: {
    //...
  }
  verticalAxis?: {
    label?: {
      interval?: number;
      formatter?: (value: string, axisLabelInfo: { axisName: AxisType; labels: string[]; index: number }) => string;
      margin?: number;
    };
    tick?: {
      interval?: number;
    };
  }
  circularAxis?: {
    label?: {
      interval?: number;
      formatter?: (value: string, axisLabelInfo: { axisName: AxisType; labels: string[]; index: number }) => string;
      margin?: number;
    };
    tick?: {
      interval?: number;
    };
    scale: {
      min?: number;
      max?: number;
      stepSize?: 'auto' | number;
    };
  }
  legend?: {
    //...
  }
  exportMenu?: {
    //...
  }
  tooltip?: {
    //...
  }
  responsive?: {
    //...
  }
  theme?: {
    // ์•„๋ž˜ ํ…Œ๋งˆ ์ฑ•ํ„ฐ์—์„œ ์„ค๋ช…
  }
  series?: {
    selectable?: boolean;
    eventDetectType?: 'point' | 'grouped';
    clockwise?: boolean;
    radiusRange?: {
      inner?: number | string;
      outer?: number | string;
    };
    angleRange?: {
      start?: number;
      end?: number;
    };
    dataLabels?: {
      visible?: boolean;
      anchor?: DataLabelAnchor;
      formatter?: (value) => string;
    };
  }
}

์ด ์ฐจํŠธ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ณตํ†ต ์˜ต์…˜์— ๋Œ€ํ•ด์„œ๋Š” ์ด ๊ฐ€์ด๋“œ์—์„œ ๋‹ค๋ฃจ์ง€ ์•Š๋Š”๋‹ค. ํ•„์š”ํ•˜๋‹ค๋ฉด ํ•ด๋‹น ์˜ต์…˜์˜ ๊ฐ€์ด๋“œ๋ฅผ ์ฐธ๊ณ ํ•˜์ž. (๋งํฌ: chart ์˜ต์…˜, ๋ฒ”๋ก€, ๋‚ด๋ณด๋‚ด๊ธฐ, ํˆดํŒ, responsive ์˜ต์…˜ )

selectable

ํ•ด๋‹น ์‹œ๋ฆฌ์ฆˆ๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ๊ธฐ๋ณธ๊ฐ’: false
const options = {
  series: {
    selectable: true
  }
};

radial-bar-selectable-point

selectable ์˜ต์…˜๊ณผ on API์˜ selectSeries, unselectSeries๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ํ•ด๋‹น ์‹œ๋ฆฌ์ฆˆ์— ๋Œ€ํ•œ ์ œ์–ด๋ฅผ ์ถ”๊ฐ€๋กœ ํ•  ์ˆ˜ ์žˆ๋‹ค.

eventDetectType

๋งˆ์šฐ์Šค๋ฅผ ํ†ตํ•ด ์‹œ๋ฆฌ์ฆˆ ๋ฐ์ดํ„ฐ๋ฅผ ์„ ํƒํ•˜๊ฑฐ๋‚˜ ํƒ์ง€ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •์˜ํ•œ๋‹ค.

ํƒ€์ž… ์„ค๋ช…
point ๊ฐœ๋ณ„ ์‹œ๋ฆฌ์ฆˆ ์˜์—ญ์— ๋งˆ์šฐ์Šค๊ฐ€ ๋‹ค๊ฐ€๊ฐ€์•ผ ํƒ์ง€. ํ˜„์žฌ ๋งˆ์šฐ์Šค๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋Š” ํฌ์ธํŠธ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‹จ ํ•œ ๊ฐœ๋งŒ ํƒ์ง€๋จ
grouped Y์ถ•์„ ๊ธฐ์ค€์œผ๋กœ ๊ฐ’์ด ๊ฐ™์€ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ํƒ์ง€๋จ
  • ๊ธฐ๋ณธ๊ฐ’: point

radial-bar-selectable-point

eventDetectType์„ 'grouped'๋กœ ์„ค์ •ํ•  ๊ฒฝ์šฐ Y์ถ•์„ ๊ธฐ์ค€์œผ๋กœ ๊ฐ’์ด ๊ฐ™์€ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ชจ๋‘ ํƒ์ง€๋œ๋‹ค.

const options = {
  series: {
    eventDetectType: 'grouped'
  }
};

radial-bar-eventDetectType.grouped

clockwise

์‹œ๋ฆฌ์ฆˆ๊ฐ€ ๊ทธ๋ ค์ง€๋Š” ๋ฐฉํ–ฅ์„ ์„ค์ •ํ•œ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์‹œ๊ณ„ ๋ฐฉํ–ฅ์œผ๋กœ ๊ทธ๋ ค์ง€๊ณ , false๋กœ ์„ค์ •ํ•˜๋ฉด ์‹œ๊ณ„ ๋ฐ˜๋Œ€ ๋ฐฉํ–ฅ์œผ๋กœ ๊ทธ๋ ค์ง„๋‹ค.

  • ๊ธฐ๋ณธ๊ฐ’: true
const options = {
  series: {
    clockwise: false
  }
};

radia-bar-counter-clockwise

radiusRange

radiusRange๋Š” inner์™€ outer ์˜ต์…˜์„ ์ง€์ •ํ•˜์—ฌ ์•ˆ์ชฝ ์›์˜ ๋ฐ˜์ง€๋ฆ„๊ณผ ๋ฐ”๊นฅ์ชฝ ์›์˜ ๋ฐ˜์ง€๋ฆ„์„ ์„ค์ •ํ•œ๋‹ค. inner์˜ ๊ธฐ๋ณธ๊ฐ’์€ 0์ด๋‹ค. 0๋ณด๋‹ค ํฐ ๊ฐ’์„ ์ž…๋ ฅํ•˜๋ฉด ๋„๋„› ๋ชจ์–‘์˜ ์ฐจํŠธ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

์†์„ฑ ์„ค๋ช…
radiusRange.inner ์•ˆ์ชฝ์˜ ๋ฐ˜์ง€๋ฆ„ ์„ค์ •
radiusRange.outer ๋ฐ”๊นฅ์ชฝ์˜ ๋ฐ˜์ง€๋ฆ„ ์„ค์ •

๊ฐ’์„ %๋ฅผ ํฌํ•จํ•œ ๋ฌธ์ž์—ด ํƒ€์ž…์œผ๋กœ ์ž…๋ ฅํ•˜๋ฉด ๋น„์œจ๋กœ ๊ณ„์‚ฐํ•œ๋‹ค.

const options = {
  series: {
    radiusRange: {
      inner: '20%',
      outer: '80%',
    }
  }
};

radial-bar-radiusRange-percent

๊ฐ’์„ ์ˆซ์ž ํƒ€์ž…์œผ๋กœ ์ž…๋ ฅํ•˜๋ฉด ๋ฐ˜์ง€๋ฆ„์€ ์ ˆ๋Œ€๊ฐ’์œผ๋กœ ๊ณ„์‚ฐ๋œ๋‹ค.

const options = {
  series: {
    radiusRange: {
      inner: 40,
      outer: 200,
    }
  }
};

radial-bar-radiusRange-px

angleRange

angleRange๋Š” start์™€ end ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ํ˜ธ์˜ ๋ฒ”์œ„๋ฅผ ์„ค์ •ํ•œ๋‹ค.

์†์„ฑ ์„ค๋ช…
angleRange.start ํ˜ธ์˜ ์‹œ์ž‘ ๊ฐ๋„ (๊ธฐ๋ณธ๊ฐ’: 0)
angleRange.end ํ˜ธ์˜ ๋ ๊ฐ๋„ (๊ธฐ๋ณธ๊ฐ’: 360)
const options = {
  series: {
    angleRange: {
      start: 45,
      end: 315,
    }
  }
};

radial-bar-angleRanges

dataLabels

๋ฐ์ดํ„ฐ ๋ผ๋ฒจ์€ ์ฐจํŠธ์—์„œ ์‹œ๋ฆฌ์ฆˆ์— ๋Œ€ํ•œ ๊ฐ’์„ ํ‘œ์‹œํ•œ๋‹ค. dataLabels ์˜ต์…˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

type options = {
  ...
  series: {
    dataLabels: {
      visible?: boolean;
      anchor?: 'center' | 'outer';
      formatter?: (value) => string;
    };
  };
};
์ด๋ฆ„ ํƒ€์ž… ์„ค๋ช…
visible boolean ๋ฐ์ดํ„ฐ ๋ผ๋ฒจ ํ‘œ์‹œ ์—ฌ๋ถ€
formatter function ๋ฐ์ดํ„ฐ ๊ฐ’์„ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋„˜๊ฒจ๋ฐ›์•„ ์ถœ๋ ฅ ํ˜•์‹ ์ง€์ •
anchor 'start' | 'center' | 'end' ๋ฐ์ดํ„ฐ ๋ผ๋ฒจ ํ‘œ์‹œ ์œ„์น˜ ์„ค์ •. (๊ธฐ๋ณธ๊ฐ’: 'center')
// ๊ธฐ๋ณธ
const options = {
  series: {
    dataLabels: { visible: true }
  }
};
// start anchor ์ ์šฉ
const options = {
  series: {
    dataLabels: {
      visible: true,
      anchor: 'start'
    }
  }
};
center anchor ์ ์šฉ(๊ธฐ๋ณธ) start anchor ์ ์šฉ end anchor ์ ์šฉ
radial-bar.datalabels.anchor.center radial-bar.datalabels.anchor.start radial-bar.datalabels.anchor.end

์‹œ๋ฆฌ์ฆˆ theme

RadialBar ์ฐจํŠธ์—์„œ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋Š” ์‹œ๋ฆฌ์ฆˆ ํ…Œ๋งˆ์ด๋‹ค. ๋ฐ์ดํ„ฐ ๋ผ๋ฒจ ์Šคํƒ€์ผ์€ ๊ฐ’์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ธฐ๋ณธ ๋ผ๋ฒจ์„ ํฌํ•จํ•˜์—ฌ, ํ™”์‚ดํ‘œ๊ฐ€ ์—†๋Š” ๋งํ’์„  ์Šคํƒ€์ผ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

interface RadialBarChartSeriesTheme {
  colors?: string[];
  barWidth?: number | string;
  areaOpacity?: number;
  lineWidth?: number;
  strokeStyle?: string;
  hover?: {
    lineWidth?: number;
    strokeStyle?: string;
    shadowColor?: string;
    shadowBlur?: number;
    shadowOffsetX?: number;
    shadowOffsetY?: number;
    color?: string;
    groupedSector?: {
      color?: string;
      opacity?: number;
    };
  };
  select?: {
    lineWidth?: number;
    strokeStyle?: string;
    shadowColor?: string;
    shadowBlur?: number;
    shadowOffsetX?: number;
    shadowOffsetY?: number;
    color?: string;
    restSeries?: {
      areaOpacity?: number;
    };
    areaOpacity?: number;
    groupedSector?: {
      color?: string;
      opacity?: number;
    };
  };
  dataLabels?: CommonDataLabelBoxTheme;
}

type CommonDataLabelBoxTheme = {
  useSeriesColor?: boolean;
  lineWidth?: number;
  textStrokeColor?: string;
  shadowColor?: string;
  shadowBlur?: number;
  fontSize?: number;
  fontFamily?: string;
  fontWeight?: string | number;
  color?: string;
  textBubble?: {
    visible?: boolean;
    paddingX?: number;
    paddingY?: number;
    backgroundColor?: string;
    borderRadius?: number;
    borderColor?: string;
    borderWidth?: number;
    shadowColor?: string;
    shadowOffsetX?: number;
    shadowOffsetY?: number;
    shadowBlur?: number;
  };
};
์ด๋ฆ„ ํƒ€์ž… ์„ค๋ช…
colors string[] ์‹œ๋ฆฌ์ฆˆ์˜ ์ƒ‰์ƒ
barWidth number ์‹œ๋ฆฌ์ฆˆ ๋„ˆ๋น„
areaOpacity number ๋ชจ๋“  ์‹œ๋ฆฌ์ฆˆ๊ฐ€ ํ™œ์„ฑ ๋˜์–ด ์žˆ์„ ๋•Œ์˜ ์ „์ฒด ์˜์—ญ ํˆฌ๋ช…๋„
lineWidth number ์‹œ๋ฆฌ์ฆˆ์˜ ํ…Œ๋‘๋ฆฌ ์„  ๋„ˆ๋น„
strokeStyle string ์‹œ๋ฆฌ์ฆˆ์˜ ํ…Œ๋‘๋ฆฌ ์„  ์ƒ‰
hover object ๋ฐ์ดํ„ฐ์— ๋งˆ์šฐ์Šค๋ฅผ ์˜ฌ๋ ธ์„ ๋•Œ ์Šคํƒ€์ผ
hover.groupedSector object ์˜ต์…˜ series.eventDetectType: 'grouped'๋กœ ์„ค์ •๋˜์–ด ์žˆ์„ ๋•Œ, Y์ถ• ๊ธฐ์ค€์œผ๋กœ ๋ฎ์–ด์ง€๋Š” ๋ฐ•์Šค ์˜์—ญ์˜ ์Šคํƒ€์ผ
select object ์˜ต์…˜ series.selectable: true๋กœ ์„ค์ • ๋˜์–ด ์žˆ์„ ๋•Œ ์‹œ๋ฆฌ์ฆˆ๊ฐ€ ์„ ํƒ ๋˜๋ฉด ์ ์šฉ๋˜๋Š” ์Šคํƒ€์ผ
select.groupedSector object ์˜ต์…˜ series.eventDetectType: 'grouped'๋กœ ์„ค์ •๋˜์–ด ์žˆ์„ ๋•Œ, Y์ถ• ๊ธฐ์ค€์œผ๋กœ ์„ ํƒ๋˜๋Š” ๋ฐ•์Šค ์˜์—ญ์˜ ์Šคํƒ€์ผ
dataLabels object ๋ฐ์ดํ„ฐ ๋ผ๋ฒจ ์Šคํƒ€์ผ
dataLabels.useSeriesColor boolean ๊ธ€์ž ์ƒ‰์ƒ์„ ์‹œ๋ฆฌ์ฆˆ ์ƒ‰์ƒ์œผ๋กœ ์‚ฌ์šฉํ• ์ง€ ์—ฌ๋ถ€
dataLabels.lineWidth number ํ…์ŠคํŠธ ์„  ๋‘๊ป˜
dataLabels.textStrokeColor string ํ…์ŠคํŠธ ์„  ์ƒ‰์ƒ
dataLabels.shadowColor string ํ…์ŠคํŠธ ๊ทธ๋ฆผ์ž ์ƒ‰์ƒ
dataLabels.shadowBlur number ํ…์ŠคํŠธ ๊ทธ๋ฆผ์ž Blur
dataLabels.fontSize number ๊ธ€์ž ํฌ๊ธฐ
dataLabels.fontFamily string ํฐํŠธ๋ช…
dataLabels.fontWeight string ๊ธ€์ž ๊ตต๊ธฐ
dataLabels.color string ๊ธ€์ž ์ƒ‰์ƒ, useSeriesColor: true๋กœ ์„ค์ •ํ•œ๊ฒฝ์šฐ ์ด ์˜ต์…˜์€ ๋™์ž‘๋˜์ง€ ์•Š์Œ
dataLabels.textBubble object ๋งํ’์„  ๋””์ž์ธ ์„ค์ •
dataLabels.textBubble.visible boolean ๋งํ’์„  ๋””์ž์ธ ์‚ฌ์šฉ ์—ฌ๋ถ€
dataLabels.textBubble.paddingX number ์ˆ˜ํ‰ ์—ฌ๋ฐฑ
dataLabels.textBubble.paddingY number ์ˆ˜์ง ์—ฌ๋ฐฑ
dataLabels.textBubble.backgroundColor string ๋งํ’์„  ๋ฐฐ๊ฒฝ์ƒ‰
dataLabels.textBubble.borderRadius number ๋งํ’์„  ํ…Œ๋‘๋ฆฌ์˜ ๋‘ฅ๊ทผ ๋ชจ์„œ๋ฆฌ ๊ฐ’
dataLabels.textBubble.borderColor string ๋งํ’์„  ํ…Œ๋‘๋ฆฌ ์ƒ‰์ƒ
dataLabels.textBubble.borderWidth number ๋งํ’์„  ํ…Œ๋‘๋ฆฌ ๋‘๊ป˜
dataLabels.textBubble.shadowColor string ๋งํ’์„  ๊ทธ๋ฆผ์ž ์ƒ‰์ƒ
dataLabels.textBubble.shadowOffsetX number ๋งํ’์„  ๊ทธ๋ฆผ์ž Offset X
dataLabels.textBubble.shadowOffsetY number ๋งํ’์„  ๊ทธ๋ฆผ์ž Offset Y
dataLabels.textBubble.shadowBlur number ๋งํ’์„  ๊ทธ๋ฆผ์ž Blur

ํ…Œ๋งˆ๋Š” ์˜ต์…˜์—์„œ theme ์˜ต์…˜์„ ์ง€์ •ํ•˜๊ณ  ์‹œ๋ฆฌ์ฆˆ ํ…Œ๋งˆ๋Š” theme.series๋กœ ์„ค์ •ํ•œ๋‹ค. ๊ฐ„๋‹จํ•œ ์˜ˆ์‹œ๋กœ ์‹œ๋ฆฌ์ฆˆ์˜ ์ƒ‰์ƒ๊ณผ ํ…Œ๋‘๋ฆฌ ์Šคํƒ€์ผ์„ ๋ณ€๊ฒฝํ•˜๊ณ  ๋งˆ์šฐ์Šค๋ฅผ ์˜ฌ๋ ธ์„ ๋•Œ ๊ทธ๋ฆผ์ž ํšจ๊ณผ๋ฅผ ์ ์šฉํ•ด๋ณด์ž.

const options = {
  theme: {
    series: {
      colors: ['#ef476f', '#ffd166', '#06d6a0', '#118ab2'],
      lineWidth: 2,
      strokeStyle: '#000000',
      hover: {
        strokeStyle: '#000000',
        lineWidth: 2,
        shadowColor: '#000000',
        shadowBlur: 6
      }
    }
  }
};

์˜ต์…˜์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

radial-bar-series-theme

์•„๋ž˜ ์ฝ”๋“œ๋Š” ๋ฐ์ดํ„ฐ ๋ผ๋ฒจ ํ…Œ๋งˆ๋ฅผ ์ ์šฉํ•˜์—ฌ ๊ธ€์ž ์Šคํƒ€์ผ์„ ๋ณ€๊ฒฝํ•œ ์˜ต์…˜์ด๋‹ค.

const options = {
  series: {
    dataLabels: { visible: true }
  },
  theme: {
    series: {
      dataLabels: {
        fontFamily: 'monaco',
        fontSize: 12,
        fontWeight: 600,
        useSeriesColor: true,
        lineWidth: 2,
        textStrokeColor: '#ffffff',
        shadowColor: '#ffffff',
        shadowBlur: 6
      }
    }
  }
};

radial-bar-series-datalabels-theme