์ฐจํธ๋ณ๋ก ์ฌ์ฉํ ์ ์๋ API๋ ์ด ๊ฐ์ด๋์์ ๋ค๋ฃจ์ง ์๋๋ค. ์ฌ์ฉ ๊ฐ๋ฅํ API๊ฐ ๊ถ๊ธํ๋ค๋ฉด API ๊ฐ์ด๋๋ฅผ ์ฐธ๊ณ ํ์.
Bar ์ฐจํธ์ ์์ฑ ๋ฐฉ๋ฒ์ ๋ ๊ฐ์ง๊ฐ ์๋ค. ์์ฑ์ ํจ์์ ์ ์ ํจ์๋ฅผ ํตํด ์์ฑํ ์ ์๋ค. ๊ฒฐ๊ณผ๋ ๋ชจ๋ ์ฐจํธ์ ์ธ์คํด์ค๊ฐ ๋ฐํ๋๋ค. ๋งค๊ฐ ๋ณ์๋ ์ฐจํธ๊ฐ ๊ทธ๋ ค์ง๋ ์์ญ์ธ HTML ์์ el
, ๋ฐ์ดํฐ๊ฐ์ธ data
, ์ต์
๊ฐ options
๊ฐ ๊ฐ์ฒด๋ก ๋ค์ด๊ฐ๋ค. el
๊ฐ์ ์ฐจํธ์ ์ปจํ
์ด๋ ์์ญ์ด๋ฏ๋ก ์ฐจํธ ์ธ์ ๋ค๋ฅธ ์์๋ค์ด ํฌํจ๋์ด ์์ผ๋ฉด ์ฐจํธ์ ์ํฅ์ ์ค ์ ์์์ผ๋ก ๋น์ด์๋ HTML ์์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๊ถ์ฅํ๋ค.
import { BarChart } from '@toast-ui/chart';
const chart = new BarChart({el, data, options});
// ํน์
import Chart from '@toast-ui/chart';
const chart = Chart.barChart({el, data, options});
categories
๊ฐ์ Y์ถ์ ํฑ์ ๋ํ๋๋ฉฐ series
๊ฐ์ name
๊ณผ data
๊ฐ ๋ชจ๋ ์์ฑ๋ ๋ฐ์ดํฐ๋ฅผ ์
๋ ฅํด์ผ ํ๋ค. name
์ ๊ฐ๊ฐ์ ์๋ฆฌ์ฆ๋ฅผ ๊ตฌ๋ถํ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉํ๋ ์ ์ผํ id๋ก ์์ฑํ๋ค.
const data = {
categories: ['Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
series: [
{
name: 'Budget',
data: [5000, 3000, 5000, 7000, 6000, 4000, 1000]
},
{
name: 'Income',
data: [8000, 4000, 7000, 2000, 6000, 3000, 5000]
},
{
name: 'Expenses',
data: [4000, 4000, 6000, 3000, 4000, 5000, 7000]
},
{
name: 'Debt',
data: [3000, 4000, 3000, 1000, 2000, 4000, 3000]
}
]
}
๊ธฐ๋ณธ ์ฐจํธ์ ๋ค๋ฅธ ์ ์ series data์ ํ์
์ด๋ค. data๋ ๋ฐฐ์ด
๋ก ์
๋ ฅ๋๋ฉฐ ๋ฒ์์ ์์๊ณผ ๋์ ์ซ์๊ฐ
์ผ๋ก ์์๋๋ก ์
๋ ฅํ๋ค.
const data = {
categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
series: [
{
name: 'Seoul',
data: [
[-8.3, 0.3],
[-5.8, 3.1],
[-0.6, 9.1],
[5.8, 16.9],
[11.5, 22.6],
[16.6, 26.6],
[21.2, 28.8],
[21.8, 30.0],
[15.8, 25.6],
[8.3, 19.6],
[1.4, 11.1],
[-5.2, 3.2],
],
},
{
name: 'Busan',
data: [
[0, 10],
[3.5, 13.1],
[5.6, 13.1],
[10.8, 16.9],
[11.5, 18.6],
[13.6, 20.6],
[15.2, 20.8],
[21.8, 26.0],
[17.8, 23.6],
[11.3, 16.6],
[4.4, 11.1],
[3.2, 11.2],
],
},
],
}
stack
์ต์
์ ํตํด ์๋ฆฌ์ฆ๋ค์ด ์์ธ ํํ์ธ ์คํ ์ฐจํธ๋ฅผ ๋ง๋ค ์ ์๋ค. ์๋ฆฌ์ฆ ๋ฐ์ดํฐ์ stackGroup
์์ฑ์ ์ถ๊ฐํ๋ฉด, ๊ฐ์ stackGroup
๋ผ๋ฆฌ ์์ธ๋ค.
const data = {
categories: [
'0 ~ 9',
'10 ~ 19',
'20 ~ 29',
'30 ~ 39',
'40 ~ 49',
'50 ~ 59',
'60 ~ 69',
'70 ~ 79',
'80 ~ 89',
'90 ~ 99',
'100 ~',
],
series: [
{
name: 'Male - Seoul',
data: [4007, 5067, 7221, 8358, 8500, 7730, 4962, 2670, 6700, 776, 131],
stackGroup: 'Male',
},
{
name: 'Female - Seoul',
data: [3805, 4728, 7244, 8291, 8530, 8126, 5483, 3161, 1274, 2217, 377],
stackGroup: 'Female',
},
{
name: 'Male - Incheon',
data: [1392, 1671, 2092, 2339, 2611, 2511, 1277, 6145, 1713, 1974, 194],
stackGroup: 'Male',
},
{
name: 'Female - Incheon',
data: [1320, 1558, 1927, 2212, 2556, 2433, 1304, 8076, 3800, 6057, 523],
stackGroup: 'Female',
},
],
};
const options = {
series: {
stack: true
}
};
๊ฐ๊ฐ์ series
๋ visible
์ต์
์ ๊ฐ์ง ์ ์๋ค. visible
์ต์
์ ์ฒ์ ์ฐจํธ๊ฐ ๊ทธ๋ ค์ก์ ๋ ์๋ฆฌ์ฆ๋ฅผ ๋ํ๋ผ์ง์ ๋ํ ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๋ค. ๊ธฐ๋ณธ๊ฐ์ true
์ด๋ค.
๊ธฐ๋ณธ ์ฐจํธ์ range, ๊ทธ๋ฃนํ ์คํ ์ฐจํธ ๋ชจ๋ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋์ผํ๋ค.
const data = {
categories: ['Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
series: [
{
name: 'Budget',
data: [5000, 3000, 5000, 7000, 6000, 4000, 1000],
visible: false,
},
{
name: 'Income',
data: [8000, 4000, 7000, 2000, 6000, 3000, 5000]
},
{
name: 'Expenses',
data: [4000, 4000, 6000, 3000, 4000, 5000, 7000]
},
{
name: 'Debt',
data: [3000, 4000, 3000, 1000, 2000, 4000, 3000]
}
]
}
์ ์ต์ ์ ์ ์ฉํด ์ฐจํธ๋ฅผ ์์ฑํด๋ณด๋ฉด ์ฒดํฌ๋ฐ์ค๊ฐ ํด์ ๋์ด ์์ฑ๋๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
๊ฐ๊ฐ์ series
๋ colorByCategories
์ต์
์ ๊ฐ์ง ์ ์๋ค. colorByCategories
์ต์
์ ์ฐจํธ์ ๋ง๋ ์์ ์นดํ
๊ณ ๋ฆฌ ๋ณ๋ก ๋ค๋ฅด๊ฒ ์น ํ ์ง ๊ฒฐ์ ํ๋ค. ๊ธฐ๋ณธ๊ฐ์ false
์ด๋ค.
const data = {
categories: ['Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
series: [
{
name: 'Budget',
data: [5000, 3000, 5000, 7000, 6000, 4000, 1000],
colorByCategories: true
}
]
}
options
๋ ๊ฐ์ฒด๋ก ์์ฑํ๋ค.
type options = {
chart?: {
// ...
},
xAxis?: {
// ...
},
yAxis?: {
// ...
},
legend?: {
// ...
},
exportMenu?: {
// ...
},
tooltip?: {
// ...
},
plot?: {
// ...
},
responsive?: {
// ...
},
theme?: {
// ์๋ ํ
๋ง ์ฑํฐ์์ ์ค๋ช
},
series?: {
stack?: boolean | {
type: 'normal' | 'percent';
connector?: boolean;
};
selectable?: boolean;
eventDetectType?: 'point' | 'grouped';
diverging?: boolean;
dataLabels?: {
visible?: boolean;
anchor?: 'center' | 'start' | 'end' | 'auto';
offsetX?: number;
offsetY?: number;
formatter?: (value) => string;
stackTotal?: {
visible?: boolean;
formatter?: (value) => string;
};
};
}
};
์ด ์ฐจํธ์์ ์ฌ์ฉํ ์ ์๋ ๊ณตํต ์ต์ ์ ๋ํด์๋ ์ด ๊ฐ์ด๋์์ ๋ค๋ฃจ์ง ์๋๋ค. ํ์ํ๋ค๋ฉด ํด๋น ์ต์ ์ ๊ฐ์ด๋๋ฅผ ์ฐธ๊ณ ํ์. (๋งํฌ:
chart
์ต์ , ์ถ, ๋ฒ๋ก, ๋ด๋ณด๋ด๊ธฐ, ํดํ, ํ๋กฏ,responsive
์ต์ )
stack
์ต์
์ ํตํด ์๋ฆฌ์ฆ๋ค์ด ์์ธ ํํ์ธ ์คํ ์ฐจํธ๋ฅผ ๋ง๋ค ์ ์๋ค. ์คํ ์ฐจํธ๋ 'normal'
ํ์
๊ณผ 'percent'
ํ์
์ด ์กด์ฌํ๋ค. stack.connector
์ต์
์ ์ค์ ํ๋ฉด ์นดํ
๊ณ ๋ฆฌ ๋ณ ๊ฐ์ ์๋ฆฌ์ฆ์ ๋ํด ์ ์ ์ด์ด ํํํ ์ ์๋ค.
series.stack
์ true
๋ก ์ค์ ํ๋ ๊ฒ์ stack.type
์ 'normal'
ํ์
์ผ๋ก ์ค์ ํ ๊ฒ๊ณผ ๊ฐ๋ค.
const options = {
series: {
stack: true
}
}
// ํน์
const options = {
series: {
stack: {
type: 'normal'
}
}
}
connector
์ต์
์ true
๋ก ์ค์ ํ ๊ฒฝ์ฐ ์ฐ๊ฒฐ์ ์ ํ์ํ ์ ์๋ค.
const options = {
series: {
stack: {
type: 'normal',
connector: true
}
}
}
stack.type
์ 'percent'
๋ก ์ค์ ํ๋ฉด ์นดํ
๊ณ ๋ฆฌ ๋ณ ์๋ฆฌ์ฆ๊ฐ ์ฐจ์งํ๋ ๋น์จ์ ๋ฐฑ๋ถ์จ๋ก ํ์ํ๋ค.
const options = {
series: {
stack: {
type: 'percent'
}
}
}
connector
์ต์
์ true
๋ก ์ค์ ํ ๊ฒฝ์ฐ ์ฐ๊ฒฐ์ ์ ํ์ํ ์ ์๋ค.
const options = {
series: {
stack: {
type: 'percent',
connector: true
}
}
}
ํด๋น ์๋ฆฌ์ฆ๋ฅผ ์ ํํ ์ ์๋ค.
- ๊ธฐ๋ณธ๊ฐ:
false
const options = {
series: {
selectable: true
}
};
selectable
์ต์
๊ณผ on
API์ selectSeries
, unselectSeries
๋ฅผ ํจ๊ป ์ฌ์ฉํ ๊ฒฝ์ฐ ํด๋น ์๋ฆฌ์ฆ์ ๋ํ ์ ์ด๋ฅผ ์ถ๊ฐ๋ก ํ ์ ์๋ค.
๋ง์ฐ์ค๋ฅผ ํตํด ์๋ฆฌ์ฆ ๋ฐ์ดํฐ๋ฅผ ์ ํํ๊ฑฐ๋ ํ์งํ๋ ๋ฐฉ๋ฒ์ ์ ์ํ๋ค.
ํ์ | ์ค๋ช |
---|---|
point |
๊ฐ๋ณ ์๋ฆฌ์ฆ ์์ญ์ ๋ง์ฐ์ค๊ฐ ๋ค๊ฐ๊ฐ์ผ ํ์ง. ํ์ฌ ๋ง์ฐ์ค๊ฐ ๊ฐ๋ฆฌํค๊ณ ์๋ ํฌ์ธํธ๋ฅผ ๊ธฐ์ค์ผ๋ก ๋จ ํ ๊ฐ๋ง ํ์ง๋จ |
grouped |
Y์ถ์ ๊ธฐ์ค์ผ๋ก ๊ฐ์ด ๊ฐ์ ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ ํ์ง๋จ |
- ๊ธฐ๋ณธ๊ฐ:
point
eventDetectType
์ 'grouped'
๋ก ์ค์ ํ ๊ฒฝ์ฐ Y์ถ์ ๊ธฐ์ค์ผ๋ก ๊ฐ์ด ๊ฐ์ ๋ฐ์ดํฐ๊ฐ ๋ชจ๋ ํ์ง๋๋ค.
const options = {
series: {
eventDetectType: 'grouped'
}
};
diverging
์ต์
์ ์ฌ์ฉํ๋ฉด ์ธ๊ตฌ ๋ถํฌ ์ฐจํธ์ ๊ฐ์ด ์์ชฝ์ผ๋ก ๋๋์ด์ง ๋ถ๊ธฐ ์ฐจํธ๋ฅผ ๋ง๋ค ์ ์๋ค.
๋ถ๊ธฐ ์ฐจํธ๋ data.series
์ ์ฒซ ๋ฒ์งธ ๋ฐ ๋ ๋ฒ์งธ ์์๋ฅผ ์ฌ์ฉํ๋ค.
- ๊ธฐ๋ณธ๊ฐ:
false
const data = {
categories: [
'100 ~',
'90 ~ 99',
'80 ~ 89',
'70 ~ 79',
'60 ~ 69',
'50 ~ 59',
'40 ~ 49',
'30 ~ 39',
'20 ~ 29',
'10 ~ 19',
'0 ~ 9',
],
series: [
{
name: 'Male',
data: [383, 3869, 39590, 136673, 248265, 419886, 451052, 391113, 352632, 296612, 236243],
},
{
name: 'Female',
data: [1255, 12846, 83976, 180790, 263033, 412847, 435981, 374321, 317092, 272438, 223251],
},
],
};
const options = {
series: {
diverging: true
}
};
yAxis.align
์ 'center'
์ต์
์ ์ง์ ํด์ฃผ๋ฉด Y์ถ์ด ์ค์์ ์์นํ๋ ๋ถ๊ธฐ ์ฐจํธ๋ฅผ ๋ง๋ค ์ ์๋ค.
const options = {
yAxis: {
align: 'center'
},
series: {
diverging: true
}
};
๋ฐ์ดํฐ ๋ผ๋ฒจ์ ์ฐจํธ์์ ์๋ฆฌ์ฆ์ ๋ํ ๊ฐ์ ํ์ํ๋ค.
dataLabels
์ต์
์ ๋ค์๊ณผ ๊ฐ๋ค.
type options = {
...
series?: {
dataLabels?: {
visible?: boolean;
offsetX?: number;
offsetY?: number;
formatter?: (value) => string;
anchor: 'start' | 'center' | 'end' | 'auto';
stackTotal?: {
visible?: boolean;
formatter?: (value) => string;
};
};
};
};
์ด๋ฆ | ํ์ | ์ค๋ช |
---|---|---|
visible |
boolean | ๋ฐ์ดํฐ ๋ผ๋ฒจ ํ์ ์ฌ๋ถ |
offsetX |
number | ๋ฐ์ดํฐ ๋ผ๋ฒจ ์์น x ์คํ์ |
offsetY |
number | ๋ฐ์ดํฐ ๋ผ๋ฒจ ์์น y ์คํ์ |
formatter |
function | ๋ฐ์ดํฐ ๊ฐ์ ๋งค๊ฐ๋ณ์๋ก ๋๊ฒจ๋ฐ์ ์ถ๋ ฅ ํ์ ์ง์ |
anchor |
'start' | 'center' | 'end' | 'auto' | ๋ฐ์ดํฐ ๋ผ๋ฒจ ์์น ์ค์ (๊ธฐ๋ณธ๊ฐ: 'auto' ) |
stackTotal |
object | ์คํ ๋ฐ ์ฐจํธ์์ ํฉ๊ณ ๊ฐ์ ๋ํ ๋ผ๋ฒจ ์ค์ |
stackTotal.visible |
boolean | ํฉ๊ณ ๋ผ๋ฒจ ํ์ ์ฌ๋ถ. ์คํ ์ฐจํธ์ผ ๊ฒฝ์ฐ ๊ธฐ๋ณธ๊ฐ์ true ๊ฐ ๋จ |
stackTotal.formatter |
function | ํฉ๊ณ ๋ฐ์ดํฐ ๊ฐ์ ๋งค๊ฐ๋ณ์๋ก ๋๊ฒจ๋ฐ์ ์ถ๋ ฅ ํ์ ์ง์ |
// ๊ธฐ๋ณธ
const options = {
series: {
dataLabels: { visible: true }
}
};
// ์คํ ๋ฐ ์ฐจํธ
const options = {
series: {
stack: true,
dataLabels: { visible: true }
}
};
Bar ์ฐจํธ์์ ์์ ํ ์ ์๋ ์๋ฆฌ์ฆ ํ ๋ง์ด๋ค. ๋ฐ์ดํฐ ๋ผ๋ฒจ ์คํ์ผ์ ๊ฐ์ ๋ํ๋ด๋ ๊ธฐ๋ณธ ๋ผ๋ฒจ์ ํฌํจํ์ฌ, ์คํ ๋ฐ ์ฐจํธ์ผ ๊ฒฝ์ฐ ํ์๋๋ ํฉ๊ณ ๋ผ๋ฒจ์ ๋ํ ์คํ์ผ๋ง๋ ํ ์ ์๋ค. ํ์ดํ๊ฐ ์๋ ๋งํ์ ์คํ์ผ์ ์ฌ์ฉํ ์ ์๋ค.
interface BoxChartSeriesTheme {
barWidth?: number | string;
areaOpacity?: number;
colors?: string[];
hover?: {
color?: string;
borderColor?: string;
borderWidth?: number;
shadowColor?: string;
shadowOffsetX?: number;
shadowOffsetY?: number;
shadowBlur?: number;
groupedRect?: {
color?: string;
opacity?: number;
};
};
select?: {
color?: string;
borderColor?: string;
borderWidth?: number;
areaOpacity?: number;
shadowColor?: string;
shadowOffsetX?: number;
shadowOffsetY?: number;
shadowBlur?: number;
groupedRect?: {
color?: string;
opacity?: number;
};
restSeries?: {
areaOpacity?: number;
};
};
connector?: {
color?: string;
lineWidth?: number;
dashSegments?: number[];
};
dataLabels?: CommonDataLabelBubbleTheme & {
stackTotal?: CommonDataLabelBubbleTheme;
};
}
type CommonDataLabelBubbleTheme = {
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;
arrow?: {
visible?: boolean;
width?: number;
height?: number;
direction?: 'top' | 'right' | 'bottom' | 'left';
};
};
};
์ด๋ฆ | ํ์ | ์ค๋ช |
---|---|---|
barWidth |
number | string | ์๋ฆฌ์ฆ ๋ฐ์ค ๋๋น |
areaOpacity |
number | ๋ชจ๋ ์๋ฆฌ์ฆ๊ฐ ํ์ฑ ๋์ด ์์ ๋์ ์ ์ฒด ์์ญ ํฌ๋ช ๋ |
colors |
string[] | ์๋ฆฌ์ฆ์ ์์ |
hover |
object | ๋ฐ์ดํฐ์ ๋ง์ฐ์ค๋ฅผ ์ฌ๋ ธ์ ๋ ์คํ์ผ |
hover.groupRect |
object | ์ต์
series.eventDetectType: 'grouped' ๋ก ์ค์ ๋์ด ์์ ๋, Y์ถ ๊ธฐ์ค์ผ๋ก ๋ฎ์ด์ง๋ ๋ฐ์ค ์์ญ์ ์คํ์ผ |
select |
object | ์ต์
series.selectable: true ๋ก ์ค์ ๋์ด ์์ ๋ ์๋ฆฌ์ฆ๊ฐ ์ ํ ๋๋ฉด ์ ์ฉ๋๋ ์คํ์ผ |
select.areaOpacity |
number | ์ ํ๋ ์๋ฆฌ์ฆ์ ์์ญ ํฌ๋ช ๋ |
select.groupRect |
object | ์ต์
series.eventDetectType: 'grouped' ๋ก ์ค์ ๋์ด ์์ ๋, Y์ถ ๊ธฐ์ค์ผ๋ก ์ ํ๋๋ ๋ฐ์ค ์์ญ์ ์คํ์ผ |
select.restSeries |
object | ์ ํ๋์ง ์์ ์๋ฆฌ์ฆ์ ์คํ์ผ |
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 |
dataLabels.textBubble.arrow |
object | ๋งํ์ ํ์ดํ ์ค์ |
dataLabels.textBubble.arrow.visible |
boolean | ํ์ดํ ํ์ ์ฌ๋ถ |
dataLabels.textBubble.arrow.width |
number | ํ์ดํ ์ผ๊ฐํ ๋๋น |
dataLabels.textBubble.arrow.height |
number | ํ์ดํ ์ผ๊ฐํ ๋์ด |
dataLabels.textBubble.arrow.direction |
'top' | 'right' | 'bottom' | 'left' | ํ์ดํ ๋ฐฉํฅ |
dataLabels.stackTotal |
object | ์คํ ์ฐจํธ์์ ํฉ๊ณ ๋ผ๋ฒจ ์คํ์ผ. dataLabels ์ ์ ์ฉํ ์ ์๋ ์คํ์ผ ์ต์
๋ชจ๋ ์ฌ์ฉ ๊ฐ๋ฅ |
ํ
๋ง๋ ์ต์
์์ theme
์ต์
์ ์ง์ ํ๊ณ ์๋ฆฌ์ฆ ํ
๋ง๋ theme.series
๋ก ์ค์ ํ๋ค. ์๋ ์ฝ๋๋ Bar ์๋ฆฌ์ฆ์ ์์๊ณผ ๋๋น๋ฅผ ๋ฐ๊พธ๊ณ , ๋ง์ฐ์ค๋ฅผ ์ฌ๋ ธ์ ๋ ์คํ์ผ์ ๋ณ๊ฒฝํ ์ต์
์ด๋ค.
const options = {
theme: {
series: {
barWidth: 5,
colors: ['#EDAE49', '#D1495B', '#00798C', '#30638E'],
hover: {
color: '#00ff00',
borderColor: '#73C8E7',
borderWidth: 3,
shadowColor: 'rgba(0, 0, 0, 0.7)',
shadowOffsetX: 4,
shadowOffsetY: 4,
shadowBlur: 6,
},
}
}
};
์ต์ ์ ๋ํ ๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ๋ค.
์๋ ์ฝ๋๋ ๋ฐ์ดํฐ ๋ผ๋ฒจ์ ํ ๋ง๋ฅผ ์ ์ฉํ์ฌ ๋งํ์ ์ผ๋ก ๋ฐ๊พธ๊ณ ๊ธ์ ์คํ์ผ์ ๋ณ๊ฒฝํ ์ต์ ์ด๋ค.
const options = {
series: {
stack: true,
dataLabels: { visible: true }
},
theme: {
series: {
dataLabels: {
fontFamily: 'monaco',
lineWidth: 2,
textStrokeColor: '#ffffff',
shadowColor: '#ffffff',
shadowBlur: 4,
stackTotal: {
fontFamily: 'monaco',
fontWeight: 14,
color: '#ffffff',
textBubble: {
visible: true,
paddingY: 6,
borderWidth: 3,
borderColor: '#00bcd4',
borderRadius: 7,
backgroundColor: '#041367',
shadowOffsetX: 0,
shadowOffsetY: 0,
shadowBlur: 0,
shadowColor: 'rgba(0, 0, 0, 0)'
}
}
}
}
}
};