μ°¨νΈλ³λ‘ μ¬μ©ν μ μλ APIλ μ΄ κ°μ΄λμμ λ€λ£¨μ§ μλλ€. μ¬μ© κ°λ₯ν APIκ° κΆκΈνλ€λ©΄ API κ°μ΄λλ₯Ό μ°Έκ³ νμ.
Treemap μ°¨νΈμ μμ± λ°©λ²μ λ κ°μ§κ° μλ€. μμ±μ ν¨μμ μ μ ν¨μλ₯Ό ν΅ν΄ μμ±ν μ μλ€. κ²°κ³Όλ λͺ¨λ μ°¨νΈμ μΈμ€ν΄μ€κ° λ°νλλ€. λ§€κ° λ³μλ μ°¨νΈκ° κ·Έλ €μ§λ μμμΈ HTML μμ el
, λ°μ΄ν°κ°μΈ data
, μ΅μ
κ° options
κ° κ°μ²΄λ‘ λ€μ΄κ°λ€. el
κ°μ μ°¨νΈμ 컨ν
μ΄λ μμμ΄λ―λ‘ μ°¨νΈ μΈμ λ€λ₯Έ μμλ€μ΄ ν¬ν¨λμ΄ μμΌλ©΄ μ°¨νΈμ μν₯μ μ€ μ μμμΌλ‘ λΉμ΄μλ HTML μμλ₯Ό μ¬μ©νλ κ²μ κΆμ₯νλ€.
import { TreemapChart } from '@toast-ui/chart';
const chart = new TreemapChart({el, data, options});
// νΉμ
import Chart from '@toast-ui/chart';
const chart = Chart.treemapChart({el, data, options});
series
κ°μ μ
λ ₯ λ°μΌλ©° label
-data
νΉμ label
-children
μ μμ μ΄λ£¬λ€. clildren
μ λ°°μ΄λ‘ μ
λ ₯μ λ°μΌλ©° νΈλ¦¬μ νμ λ°μ΄ν°λ₯Ό μ
λ ₯ λ°λλ€. data
κ°μ μ«μκ°μ μ
λ ₯λ°λλ€.
const data = {
series: [
{
label: 'Documents',
children: [
{
label: 'docs',
children: [
{
label: 'pages',
data: 1.3,
},
{
label: 'keynote',
data: 2.5,
},
{
label: 'numbers',
data: 1.2,
},
],
},
{
label: 'photos',
data: 5.5,
},
{
label: 'videos',
data: 20.7,
},
],
},
{
label: 'Downloads',
children: [
{
label: 'recent',
data: 5.3,
},
{
label: '2020',
data: 10.1,
},
{
label: '2019',
data: 8.2,
},
],
},
{
label: 'Application',
data: 16.4,
},
{
label: 'Desktop',
data: 4.5,
},
],
}
data
κ°μ κΈ°μ€μΌλ‘ κ° μ리μ¦μ μμμ λ£λ κ² λμ μμ κ°μ λ³λλ‘ μ€ κ°μ κΈ°μ€μΌλ‘ μ 체 μ°¨νΈμ μλ¦¬μ¦ μμμ μ ν΄μ€ μ μλ€. useColorValue
μ΅μ
κ°κ³Ό λ°μ΄ν°μ colorValue
κ°μ μΆκ°ν΄μ£Όλ©΄ μ μ©λλ€.
- κΈ°λ³Έκ°:
true
const options = {
series: {
useColorValue: true
}
};
λ°μ΄ν°μ ꡬ쑰λ κΈ°λ³Έ μ°¨νΈμ λμΌνλ©° λμ colorValue
κ°μ μΆκ°λ‘ λ°λλ€. κ°μ μ«μ νμ
μ΄λ€.
const options = {
series: [
{
label: 'Asia',
children: [
{
label: 'South Korea',
data: 99909,
colorValue: 499.81,
},
{
label: 'Japan',
data: 364485,
colorValue: 335.61,
},
{
label: 'Jordan',
data: 88802,
colorValue: 86.07,
},
{
label: 'Iraq',
data: 437367,
colorValue: 81.6,
},
],
},
{
label: 'Europe',
children: [
{
label: 'UK',
data: 241930,
colorValue: 262.84,
},
{
label: 'France',
data: 640427,
colorValue: 117.83,
},
{
label: 'Hungary',
data: 89608,
colorValue: 106.54,
},
{
label: 'Portugal',
data: 91470,
colorValue: 115.35,
},
],
},
{
label: 'America',
children: [
{
label: 'Panama',
data: 74340,
colorValue: 52.81,
},
{
label: 'Honduras',
data: 111890,
colorValue: 75.15,
},
{
label: 'Uruguay',
data: 175015,
colorValue: 19.6,
},
{
label: 'Cuba',
data: 109820,
colorValue: 101.47,
},
],
},
{
label: 'Africa',
children: [
{
label: 'Malawi',
data: 94080,
colorValue: 146.09,
},
{
label: 'Ghana',
data: 227533,
colorValue: 113.13,
},
{
label: 'Togo',
data: 54385,
colorValue: 126.28,
},
{
label: 'Benin',
data: 114305,
colorValue: 96.61,
},
],
},
],
};
options
λ κ°μ²΄λ‘ μμ±νλ€.
type options = {
chart?: {
//...
}
legend?: {
//...
}
exportMenu?: {
//...
}
tooltip?: {
//...
}
responsive?: {
//...
}
theme?: {
// μλ ν
λ§ μ±ν°μμ μ€λͺ
}
series?: {
useColorValue?: boolean;
zoomable?: boolean;
selectable?: boolean;
dataLabels?: {
useTreemapLeaf?: boolean;
visible?: boolean;
offsetX?: number;
offsetY?: number;
formatter?: (value) => string;
}
}
}
μ΄ μ°¨νΈμμ μ¬μ©ν μ μλ κ³΅ν΅ μ΅μ μ λν΄μλ μ΄ κ°μ΄λμμ λ€λ£¨μ§ μλλ€. νμνλ€λ©΄ ν΄λΉ μ΅μ μ κ°μ΄λλ₯Ό μ°Έκ³ νμ. (λ§ν¬:
chart
μ΅μ , λ²λ‘, ν΄ν, λ΄λ³΄λ΄κΈ°,responsive
μ΅μ )
- κΈ°λ³Έκ°:
false
ν΄λΉ μ리μ¦λ₯Ό μ νν μ μλ€.
const options = {
series: {
selectable: true
}
};
selectable
μ΅μ
κ³Ό on
APIμ selectSeries
, unselectSeries
λ₯Ό ν¨κ» μ¬μ©ν κ²½μ° ν΄λΉ μ리μ¦μ λν μ μ΄λ₯Ό μΆκ°λ‘ ν μ μλ€.
- κΈ°λ³Έκ°:
false
zoomableμ ν΅ν΄ μ°¨νΈλ₯Ό νλ ν μ μλ€.
const options = {
series: {
zoomable: true
}
}
λ°μ΄ν° λΌλ²¨μ μ°¨νΈμμ μ리μ¦μ λν κ°μ νμνλ€.
dataLabels
μ΅μ
μ λ€μκ³Ό κ°λ€.
type options = {
...
series?: {
dataLabels?: {
visible?: boolean;
offsetX?: number;
offsetY?: number;
formatter?: (value) => string;
useTreemapLeaf?: boolean;
}
}
};
μ΄λ¦ | νμ | μ€λͺ |
---|---|---|
visible |
boolean | λ°μ΄ν° λΌλ²¨ νμ μ¬λΆ |
offsetX |
number | λ°μ΄ν° λΌλ²¨ μμΉ x μ€νμ |
offsetY |
number | λ°μ΄ν° λΌλ²¨ μμΉ y μ€νμ |
formatter |
function | λ°μ΄ν° κ°μ 맀κ°λ³μλ‘ λ겨λ°μ μΆλ ₯ νμ μ§μ |
useTreemapLeaf |
boolean | μμ λ°μ΄ν° λΌλ²¨ νμ μ¬λΆ |
λ°μ΄ν° λΌλ²¨μ λ ΈμΆν λ νμ¬ λ³΄κ³ μλ νΈλ¦¬ κ³μΈ΅μ λ Έλ λΌλ²¨λ§μ λ ΈμΆνλ€.
// κΈ°λ³Έ
const options = {
series: {
dataLabels: { visible: true }
}
};
νμ λ
Έλλ€μ λΌλ²¨μ λ
ΈμΆνκ³ μΆμ κ²½μ° useTreemapLeaf
μ΅μ
μ μΌμ£Όλ©΄ λλ€.
// μμ λ°μ΄ν° λΌλ²¨ νμ
const options = {
series: {
dataLabels: {
visible: true,
useTreemapLeaf: true
}
}
};
Treemap μ°¨νΈμμ μμ ν μ μλ μλ¦¬μ¦ ν λ§μ΄λ€. λ°μ΄ν° λΌλ²¨ ν λ§λ νμ΄νκ° μλ λ§νμ μ€νμΌμ μ¬μ©ν μ μλ€.
interface TreemapChartSeriesTheme {
colors?: string[];
startColor?: string;
endColor?: string;
borderColor?: string;
borderWidth?: number;
select?: {
color?: string;
borderColor?: string;
borderWidth?: number;
};
hover?: {
color?: string;
borderColor?: string;
borderWidth?: number;
};
dataLabels?: {
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[] | μ리μ¦μ μμ |
startColor |
string | useColorValue: true μΌ λ colorValue κ°μ μμ κΈ°μ€μ΄ λλ μμκ° |
endColor |
string | useColorValue: true μΌ λ colorValue κ°μ μμ κΈ°μ€μ΄ λλ λκ° |
borderColor |
string | μ리μ¦μ ν λ리 μμ |
borderWidth |
number | μ리μ¦μ ν λ리 λλΉ |
select |
object | selectable: true μ΄λ©° μ리μ¦κ° μ ν λμμ λ μ μ©λλ μ€νμΌ |
hover |
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 |
series.useColorValue
μ΅μ
κ°μ΄ trueμΌ λ κΈ°μ€μ΄ λλ μμ κ°μ΄λ€. startColor
μ endColor
μμ κ°μ κΈ°μ€μΌλ‘ μ
λ ₯λ°μ colorValue
μ μμμ κ²°μ νλ€.
κ°λ¨ν μμλ‘ startColorλ₯Ό #4A76B2
,
endColorλ₯Ό #221271
λ‘ μ§μ νλ©΄ colorValueκ° λμ μλ‘ endColorμ κ°κΉμ΄ μκΉμ κ°μ§ κ²μ΄λ€.
const options = {
series: {
theme: {
startColor: '#4A76B2',
endColor: '#221271'
}
}
}
μλ μ½λλ λ°μ΄ν° λΌλ²¨μ ν λ§λ₯Ό μ μ©νμ¬ κΈμ μ€νμΌμ λ³κ²½ν μ΅μ μ΄λ€.
const options = {
series: {
dataLabels: { visible: true }
},
theme: {
series: {
dataLabels: {
fontFamily: 'monaco',
fontSize: 16,
fontWeight: '800',
useSeriesColor: true,
lineWidth: 3,
textStrokeColor: '#ffffff',
shadowColor: '#ffffff',
shadowBlur: 10
}
}
}
};