Working with data in Vue Heatmap chart component
13 Jun 202424 minutes to read
Heat map visualizes the JSON data and two-dimensional array data. Using the data adaptor support, data can be bound to the heat map.
Data adaptor
Heat map supports the following types of data binding with the adaptor support.
- Array
- Table Binding
- Cell Binding
- JSON data
- Table Binding
- Cell Binding
Array - table binding
This data type is a collection of one dimensional array objects, at which each inner array contains data points for an X-axis data label. This is the default data binding type for heat map. You can also directly bind the array object to the dataSource property.
<template>
<div id="app">
<ejs-heatmap id="heatmap" :titleSettings='titleSettings' :xAxis='xAxis' :yAxis='yAxis'
:paletteSettings='paletteSettings' :legendSettings='legendSettings' :tooltipRender='tooltipRender'
:dataSource='dataSource'></ejs-heatmap>
</div>
</template>
<script setup>
import { provide } from "vue";
import { HeatMapComponent as EjsHeatmap, Tooltip, Legend } from '@syncfusion/ej2-vue-heatmap';
const dataSource = [
[9.5, 2.2, 4.2, 8.2, -0.5, 3.2, 5.4, 7.4, 6.2, 1.4],
[4.3, 8.9, 10.8, 6.5, 5.1, 6.2, 7.6, 7.5, 6.1, 7.6],
[3.9, 2.7, 2.5, 3.7, 2.6, 5.1, 5.8, 2.9, 4.5, 5.1],
[2.4, -3.7, 4.1, 6.0, 5.0, 2.4, 3.3, 4.6, 4.3, 2.7],
[2.0, 7.0, -4.1, 8.9, 2.7, 5.9, 5.6, 1.9, -1.7, 2.9],
[5.4, 1.1, 6.9, 4.5, 2.9, 3.4, 1.5, -2.8, -4.6, 1.2],
[-1.3, 3.9, 3.5, 6.6, 5.2, 7.7, 1.4, -3.6, 6.6, 4.3],
[-1.6, 2.3, 2.9, -2.5, 1.3, 4.9, 10.1, 3.2, 4.8, 2.0],
[10.8, -1.6, 4.0, 6.0, 7.7, 2.6, 5.6, -2.5, 3.8, -1.9],
[6.2, 9.8, -1.5, 2.0, -1.5, 4.3, 6.7, 3.8, -1.2, 2.4],
[1.2, 10.9, 4.0, -1.4, 2.2, 1.6, -2.6, 2.3, 1.7, 2.4],
[5.1, -2.4, 8.2, -1.1, 3.5, 6.0, -1.3, 7.2, 9.0, 4.2]
];
const titleSettings = {
text: 'GDP Growth Rate for Major Economies (in Percentage)',
textStyle: {
size: '15px',
fontWeight: '500',
fontStyle: 'Normal',
fontFamily: 'Segoe UI'
}
};
const xAxis = {
labels: ['China', 'India', 'Australia', 'Mexico', 'Canada', 'Brazil',
'USA', 'UK', 'Germany', 'Russia', 'France', 'Japan'],
labelRotation: 45,
labelIntersectAction: 'None'
};
const yAxis = {
labels: ['2008', '2009', '2010', '2011', '2012', '2013', '2014', '2015', '2016', '2017']
};
const paletteSettings = {
palette: [
{ value: -1, color: '#F0D6AD' },
{ value: 0, color: '#9da49a' },
{ value: 3.5, color: '#d7c7a7' },
{ value: 6.0, color: '#6e888f' },
{ value: 7.5, color: '#466f86' },
{ value: 10, color: '#19547B' },
],
};
const legendSettings = {
visible: false
};
const tooltipRender = (args) => {
args.content = [args.yLabel + ' | ' + args.xLabel + ' : ' + args.value + ' %'];
};
provide('heatmap', [Tooltip, Legend])
</script>
<template>
<div id="app">
<ejs-heatmap id="heatmap" :titleSettings='titleSettings' :xAxis='xAxis' :yAxis='yAxis'
:paletteSettings='paletteSettings' :legendSettings='legendSettings' :tooltipRender='tooltipRender'
:dataSource='dataSource'></ejs-heatmap>
</div>
</template>
<script>
import { HeatMapComponent, Tooltip, Legend } from '@syncfusion/ej2-vue-heatmap';
export default {
name: "App",
components: {
"ejs-heatmap": HeatMapComponent
},
data: function () {
return {
dataSource: [
[9.5, 2.2, 4.2, 8.2, -0.5, 3.2, 5.4, 7.4, 6.2, 1.4],
[4.3, 8.9, 10.8, 6.5, 5.1, 6.2, 7.6, 7.5, 6.1, 7.6],
[3.9, 2.7, 2.5, 3.7, 2.6, 5.1, 5.8, 2.9, 4.5, 5.1],
[2.4, -3.7, 4.1, 6.0, 5.0, 2.4, 3.3, 4.6, 4.3, 2.7],
[2.0, 7.0, -4.1, 8.9, 2.7, 5.9, 5.6, 1.9, -1.7, 2.9],
[5.4, 1.1, 6.9, 4.5, 2.9, 3.4, 1.5, -2.8, -4.6, 1.2],
[-1.3, 3.9, 3.5, 6.6, 5.2, 7.7, 1.4, -3.6, 6.6, 4.3],
[-1.6, 2.3, 2.9, -2.5, 1.3, 4.9, 10.1, 3.2, 4.8, 2.0],
[10.8, -1.6, 4.0, 6.0, 7.7, 2.6, 5.6, -2.5, 3.8, -1.9],
[6.2, 9.8, -1.5, 2.0, -1.5, 4.3, 6.7, 3.8, -1.2, 2.4],
[1.2, 10.9, 4.0, -1.4, 2.2, 1.6, -2.6, 2.3, 1.7, 2.4],
[5.1, -2.4, 8.2, -1.1, 3.5, 6.0, -1.3, 7.2, 9.0, 4.2]
],
titleSettings: {
text: 'GDP Growth Rate for Major Economies (in Percentage)',
textStyle: {
size: '15px',
fontWeight: '500',
fontStyle: 'Normal',
fontFamily: 'Segoe UI'
}
},
xAxis: {
labels: ['China', 'India', 'Australia', 'Mexico', 'Canada', 'Brazil',
'USA', 'UK', 'Germany', 'Russia', 'France', 'Japan'],
labelRotation: 45,
labelIntersectAction: 'None'
},
yAxis: {
labels: ['2008', '2009', '2010', '2011', '2012', '2013', '2014', '2015', '2016', '2017']
},
paletteSettings: {
palette: [
{ value: -1, color: '#F0D6AD' },
{ value: 0, color: '#9da49a' },
{ value: 3.5, color: '#d7c7a7' },
{ value: 6.0, color: '#6e888f' },
{ value: 7.5, color: '#466f86' },
{ value: 10, color: '#19547B' },
],
},
legendSettings: {
visible: false
}
}
},
provide: {
heatmap: [Tooltip, Legend]
},
methods: {
tooltipRender: function (args) {
args.content = [args.yLabel + ' | ' + args.xLabel + ' : ' + args.value + ' %'];
}
}
}
</script>
Array - cell binding
This data type is a collection of array objects that contain information about the row index, column index, and data value for each cell. You can bind the data to heat map by using the data property in the dataSource and setting the adaptorType property to Cell.
<template>
<div id="app">
<ejs-heatmap id="heatmap" :titleSettings='titleSettings' :xAxis='xAxis' :yAxis='yAxis'
:paletteSettings='paletteSettings' :legendSettings='legendSettings' :tooltipRender='tooltipRender'
:dataSource='dataSource' :cellSettings='cellSettings'></ejs-heatmap>
</div>
</template>
<script setup>
import { provide } from "vue";
import { HeatMapComponent as EjsHeatmap, Tooltip, Legend } from '@syncfusion/ej2-vue-heatmap';
const dataSource = [
[0, 0, 10.75], [0, 1, 14.5], [0, 2, 25.5], [0, 3, 39.5], [0, 4, 59.75], [0, 5, 35.50], [0, 6, 75.5],
[1, 0, 20.75], [1, 1, 35.5], [1, 2, 29.5], [1, 3, 75.5], [1, 4, 80], [1, 5, 65], [1, 6, 85],
[2, 0, 6], [2, 1, 18.5], [2, 2, 30.05], [2, 3, 35.5], [2, 4, 40.75], [2, 5, 50.75], [2, 6, 65],
[3, 0, 30.5], [3, 1, 20.5], [3, 2, 45.30], [3, 3, 50], [3, 4, 55], [3, 5, 85.80], [3, 6, 87.5],
[4, 0, 10.5], [4, 1, 20.75], [4, 2, 35.5], [4, 3, 35.5], [4, 4, 45.5], [4, 5, 65.], [4, 6, 75.5],
[5, 0, 45.5], [5, 1, 20.75], [5, 2, 45.5], [5, 3, 50.75], [5, 4, 79.30], [5, 5, 84.20], [5, 6, 87.36],
[6, 0, 26.82], [6, 1, 70], [6, 2, 75], [6, 3, 79.5], [6, 4, 88.5], [6, 5, 89.5], [6, 6, 91.75],
[7, 0, 15.75], [7, 1, 20.75], [7, 2, 25.5], [7, 3, 42.35], [7, 4, 45.15], [7, 5, 76.5], [7, 6, 80.5],
[8, 0, 1.98], [8, 1, 15.23], [8, 2, 43], [8, 3, 49], [8, 4, 63.80], [8, 5, 67.97], [8, 6, 70.52],
[9, 0, 14.31], [9, 1, 42.87], [9, 2, 77.28], [9, 3, 77.82], [9, 4, 81.44], [9, 5, 81.92], [9, 6, 83.75],
[10, 0, 25.5], [10, 1, 35.5], [10, 2, 40.5], [10, 3, 45.05], [10, 4, 50.5], [10, 5, 75.5], [10, 6, 90.58]
];
const titleSettings = {
text: 'Percentage of Individuals Using Internet by Country',
textStyle: {
size: '15px',
fontWeight: '500',
fontStyle: 'Normal',
fontFamily: 'Segoe UI'
}
};
const xAxis = {
labels: ['China', 'Australia', 'Mexico', 'Canada', 'Brazil', 'USA',
'UK', 'Germany', 'Russia', 'France', 'Japan']
};
const yAxis = {
labels: ['2000', '2005', '2010', '2011', '2012', '2013', '2014']
};
const cellSettings = {
border: {
width: 0
},
textStyle: {
color: 'white'
},
format: '{value} %'
};
const paletteSettings = {
palette: [
{ color: '#3498DB' },
{ color: '#2C3E50' }
]
};
const legendSettings = {
visible: false
};
provide('heatmap', [Tooltip, Legend])
const tooltipRender = (args) => {
args.content = [args.yLabel + ' | ' + args.xLabel + ' : ' + args.value + ' %'];
}
</script>
<template>
<div id="app">
<ejs-heatmap id="heatmap" :titleSettings='titleSettings' :xAxis='xAxis' :yAxis='yAxis'
:paletteSettings='paletteSettings' :legendSettings='legendSettings' :tooltipRender='tooltipRender'
:dataSource='dataSource' :cellSettings='cellSettings'></ejs-heatmap>
</div>
</template>
<script>
import { HeatMapComponent, Tooltip, Legend, Adaptor } from '@syncfusion/ej2-vue-heatmap';
export default {
name: "App",
components: {
"ejs-heatmap": HeatMapComponent
},
data: function () {
return {
dataSource: [
[0, 0, 10.75], [0, 1, 14.5], [0, 2, 25.5], [0, 3, 39.5], [0, 4, 59.75], [0, 5, 35.50], [0, 6, 75.5],
[1, 0, 20.75], [1, 1, 35.5], [1, 2, 29.5], [1, 3, 75.5], [1, 4, 80], [1, 5, 65], [1, 6, 85],
[2, 0, 6], [2, 1, 18.5], [2, 2, 30.05], [2, 3, 35.5], [2, 4, 40.75], [2, 5, 50.75], [2, 6, 65],
[3, 0, 30.5], [3, 1, 20.5], [3, 2, 45.30], [3, 3, 50], [3, 4, 55], [3, 5, 85.80], [3, 6, 87.5],
[4, 0, 10.5], [4, 1, 20.75], [4, 2, 35.5], [4, 3, 35.5], [4, 4, 45.5], [4, 5, 65.], [4, 6, 75.5],
[5, 0, 45.5], [5, 1, 20.75], [5, 2, 45.5], [5, 3, 50.75], [5, 4, 79.30], [5, 5, 84.20], [5, 6, 87.36],
[6, 0, 26.82], [6, 1, 70], [6, 2, 75], [6, 3, 79.5], [6, 4, 88.5], [6, 5, 89.5], [6, 6, 91.75],
[7, 0, 15.75], [7, 1, 20.75], [7, 2, 25.5], [7, 3, 42.35], [7, 4, 45.15], [7, 5, 76.5], [7, 6, 80.5],
[8, 0, 1.98], [8, 1, 15.23], [8, 2, 43], [8, 3, 49], [8, 4, 63.80], [8, 5, 67.97], [8, 6, 70.52],
[9, 0, 14.31], [9, 1, 42.87], [9, 2, 77.28], [9, 3, 77.82], [9, 4, 81.44], [9, 5, 81.92], [9, 6, 83.75],
[10, 0, 25.5], [10, 1, 35.5], [10, 2, 40.5], [10, 3, 45.05], [10, 4, 50.5], [10, 5, 75.5], [10, 6, 90.58]
],
titleSettings: {
text: 'Percentage of Individuals Using Internet by Country',
textStyle: {
size: '15px',
fontWeight: '500',
fontStyle: 'Normal',
fontFamily: 'Segoe UI'
}
},
xAxis: {
labels: ['China', 'Australia', 'Mexico', 'Canada', 'Brazil', 'USA',
'UK', 'Germany', 'Russia', 'France', 'Japan']
},
yAxis: {
labels: ['2000', '2005', '2010', '2011', '2012', '2013', '2014']
},
cellSettings: {
border: {
width: 0
},
textStyle: {
color: 'white'
},
format: '{value} %'
},
legendSettings: {
visible: false
},
paletteSettings: {
palette: [
{ color: '#3498DB' },
{ color: '#2C3E50' }
]
}
}
},
provide: {
heatmap: [Tooltip, Legend, Adaptor]
},
methods: {
tooltipRender: function (args) {
args.content = [args.yLabel + ' | ' + args.xLabel + ' : ' + args.value + ' %'];
}
}
}
</script>
JSON data - table binding
In JSON table data binding, each JSON object contains an X-axis data point as row header and all the corresponding Y-axis data values. You can bind the JSON table data to the heat map using the data property in dataSource. To achieve this, you should enable the isJsonData property and define the adaptorType property as Table. The xDataMapping property is used to map the row header in JSON data.
<template>
<div id="app">
<ejs-heatmap id="heatmap" :titleSettings='titleSettings' :xAxis='xAxis' :yAxis='yAxis'
:paletteSettings='paletteSettings' :dataSource='dataSource' :dataSourceSettings='dataSourceSettings'
:cellSettings='cellSettings'></ejs-heatmap>
</div>
</template>
<script setup>
import { provide } from "vue";
import { HeatMapComponent as EjsHeatmap, Tooltip, Adaptor, Legend } from '@syncfusion/ej2-vue-heatmap';
const dataSource = [
{ 'Region': 'USA', '2000': 93, '2004': 101, '2008': 112, '2012': 103, '2016': 121 },
{ 'Region': 'GBR', '2000': 28, '2004': 30, '2008': 49, '2012': 65, '2016': 67 },
{ 'Region': 'China', '2000': 58, '2004': 63, '2008': 100, '2012': 91, '2016': 70 },
{ 'Region': 'Russia', '2000': 89, '2004': 90, '2008': 60, '2012': 69, '2016': 55 },
{ 'Region': 'Germany', '2000': 56, '2004': 49, '2008': 41, '2012': 44, '2016': 42 },
{ 'Region': 'Japan', '2000': 18, '2004': 37, '2008': 25, '2012': 38, '2016': 41 },
{ 'Region': 'France', '2000': 38, '2004': 33, '2008': 43, '2012': 35, '2016': 42 },
{ 'Region': 'KOR', '2000': 28, '2004': 30, '2008': 32, '2012': 30, '2016': 21 },
{ 'Region': 'Italy', '2000': 34, '2004': 32, '2008': 27, '2012': 28, '2016': 28 }
];
const dataSourceSettings = {
isJsonData: true,
adaptorType: 'Table',
xDataMapping: 'Region'
};
const titleSettings = {
text: 'Olympic Medal Achievements of most Successful Countries',
textStyle: {
size: '15px',
fontWeight: '500',
fontStyle: 'Normal',
fontFamily: 'Segoe UI'
}
};
const xAxis = {
labels: ['China', 'France', 'GBR', 'Germany', 'Italy', 'Japan', 'KOR', 'Russia', 'USA'],
labelRotation: 45,
labelIntersectAction: 'None'
};
const yAxis = {
title: { text: 'Olympic Year' },
labels: ['2000', '2004', '2008', '2012', '2016'],
};
const cellSettings = {
border: {
width: 1,
radius: 4,
color: 'white'
}
};
const paletteSettings = {
palette: [
{ color: '#F0C27B' },
{ color: '#4B1248' }
]
};
provide('heatmap', [Tooltip, Legend, Adaptor])
</script>
<template>
<div id="app">
<ejs-heatmap id="heatmap" :titleSettings='titleSettings' :xAxis='xAxis' :yAxis='yAxis'
:paletteSettings='paletteSettings' :dataSource='dataSource' :dataSourceSettings='dataSourceSettings'
:cellSettings='cellSettings'></ejs-heatmap>
</div>
</template>
<script>
import { HeatMapComponent, Tooltip, Legend, Adaptor } from '@syncfusion/ej2-vue-heatmap';
export default {
name: "App",
components: {
"ejs-heatmap": HeatMapComponent
},
data: function () {
return {
dataSource: [
{ 'Region': 'USA', '2000': 93, '2004': 101, '2008': 112, '2012': 103, '2016': 121 },
{ 'Region': 'GBR', '2000': 28, '2004': 30, '2008': 49, '2012': 65, '2016': 67 },
{ 'Region': 'China', '2000': 58, '2004': 63, '2008': 100, '2012': 91, '2016': 70 },
{ 'Region': 'Russia', '2000': 89, '2004': 90, '2008': 60, '2012': 69, '2016': 55 },
{ 'Region': 'Germany', '2000': 56, '2004': 49, '2008': 41, '2012': 44, '2016': 42 },
{ 'Region': 'Japan', '2000': 18, '2004': 37, '2008': 25, '2012': 38, '2016': 41 },
{ 'Region': 'France', '2000': 38, '2004': 33, '2008': 43, '2012': 35, '2016': 42 },
{ 'Region': 'KOR', '2000': 28, '2004': 30, '2008': 32, '2012': 30, '2016': 21 },
{ 'Region': 'Italy', '2000': 34, '2004': 32, '2008': 27, '2012': 28, '2016': 28 }
],
dataSourceSettings: {
isJsonData: true,
adaptorType: 'Table',
xDataMapping: 'Region'
},
titleSettings: {
text: 'Olympic Medal Achievements of most Successful Countries',
textStyle: {
size: '15px',
fontWeight: '500',
fontStyle: 'Normal',
fontFamily: 'Segoe UI'
}
},
xAxis: {
labels: ['China', 'France', 'GBR', 'Germany', 'Italy', 'Japan', 'KOR', 'Russia', 'USA'],
labelRotation: 45,
labelIntersectAction: 'None'
},
yAxis: {
title: { text: 'Olympic Year' },
labels: ['2000', '2004', '2008', '2012', '2016'],
},
cellSettings: {
border: {
width: 1,
radius: 4,
color: 'white'
}
},
paletteSettings: {
palette: [
{ color: '#F0C27B' },
{ color: '#4B1248' }
]
},
}
},
provide: {
heatmap: [Tooltip, Legend, Adaptor]
}
}
</script>
JSON data - Cell binding
In JSON cell data binding, each JSON object consists a value for each cell along with a mapping value for row and column. You can bind the JSON cell data having information for each cell to the heat map using the data property in dataSource. To achieve this, you should define the adaptorType property as Cell, and enable the isJsonData property. Now, map the fields of data by using the valueMapping, xDataMapping and yDataMapping properties.
<template>
<div id="app">
<ejs-heatmap id="heatmap" :titleSettings='titleSettings' :xAxis='xAxis' :yAxis='yAxis'
:paletteSettings='paletteSettings' :dataSource='dataSource' :dataSourceSettings='dataSourceSettings'
:cellSettings='cellSettings'></ejs-heatmap>
</div>
</template>
<script setup>
import { provide } from "vue";
import { HeatMapComponent as EjsHeatmap, Tooltip, Adaptor, Legend } from '@syncfusion/ej2-vue-heatmap';
const dataSource = [
{ 'rowid': 'France', 'columnid': '2010', 'value': '77.6' },
{ 'rowid': 'France', 'columnid': '2011', 'value': '79.4' },
{ 'rowid': 'France', 'columnid': '2012', 'value': '80.8' },
{ 'rowid': 'France', 'columnid': '2013', 'value': '86.6' },
{ 'rowid': 'France', 'columnid': '2014', 'value': '83.7' },
{ 'rowid': 'France', 'columnid': '2015', 'value': '84.5' },
{ 'rowid': 'France', 'columnid': '2016', 'value': '82.6' },
{ 'rowid': 'USA', 'columnid': '2010', 'value': '60.6' },
{ 'rowid': 'USA', 'columnid': '2011', 'value': '65.4' },
{ 'rowid': 'USA', 'columnid': '2012', 'value': '70.8' },
{ 'rowid': 'USA', 'columnid': '2013', 'value': '73.8' },
{ 'rowid': 'USA', 'columnid': '2014', 'value': '75.3' },
{ 'rowid': 'USA', 'columnid': '2015', 'value': '77.5' },
{ 'rowid': 'USA', 'columnid': '2016', 'value': '77.6' },
{ 'rowid': 'Spain', 'columnid': '2010', 'value': '64.9' },
{ 'rowid': 'Spain', 'columnid': '2011', 'value': '52.6' },
{ 'rowid': 'Spain', 'columnid': '2012', 'value': '60.8' },
{ 'rowid': 'Spain', 'columnid': '2013', 'value': '65.6' },
{ 'rowid': 'Spain', 'columnid': '2014', 'value': '52.6' },
{ 'rowid': 'Spain', 'columnid': '2015', 'value': '68.5' },
{ 'rowid': 'Spain', 'columnid': '2016', 'value': '75.6' },
{ 'rowid': 'China', 'columnid': '2010', 'value': '55.6' },
{ 'rowid': 'China', 'columnid': '2011', 'value': '52.3' },
{ 'rowid': 'China', 'columnid': '2012', 'value': '54.8' },
{ 'rowid': 'China', 'columnid': '2013', 'value': '51.1' },
{ 'rowid': 'China', 'columnid': '2014', 'value': '55.6' },
{ 'rowid': 'China', 'columnid': '2015', 'value': '56.9' },
{ 'rowid': 'China', 'columnid': '2016', 'value': '59.3' },
{ 'rowid': 'Italy', 'columnid': '2010', 'value': '43.6' },
{ 'rowid': 'Italy', 'columnid': '2011', 'value': '43.2' },
{ 'rowid': 'Italy', 'columnid': '2012', 'value': '55.8' },
{ 'rowid': 'Italy', 'columnid': '2013', 'value': '50.1' },
{ 'rowid': 'Italy', 'columnid': '2014', 'value': '48.5' },
{ 'rowid': 'Italy', 'columnid': '2015', 'value': '50.7' },
{ 'rowid': 'Italy', 'columnid': '2016', 'value': '52.4' },
{ 'rowid': 'UK', 'columnid': '2010', 'value': '28.2' },
{ 'rowid': 'UK', 'columnid': '2011', 'value': '31.6' },
{ 'rowid': 'UK', 'columnid': '2012', 'value': '29.8' },
{ 'rowid': 'UK', 'columnid': '2013', 'value': '33.1' },
{ 'rowid': 'UK', 'columnid': '2014', 'value': '32.6' },
{ 'rowid': 'UK', 'columnid': '2015', 'value': '34.4' },
{ 'rowid': 'UK', 'columnid': '2016', 'value': '35.8' },
{ 'rowid': 'Germany', 'columnid': '2010', 'value': '26.8' },
{ 'rowid': 'Germany', 'columnid': '2011', 'value': '29' },
{ 'rowid': 'Germany', 'columnid': '2012', 'value': '26.8' },
{ 'rowid': 'Germany', 'columnid': '2013', 'value': '27.6' },
{ 'rowid': 'Germany', 'columnid': '2014', 'value': '33' },
{ 'rowid': 'Germany', 'columnid': '2015', 'value': '35' },
{ 'rowid': 'Germany', 'columnid': '2016', 'value': '35.6' },
{ 'rowid': 'Mexico', 'columnid': '2010', 'value': '23.2' },
{ 'rowid': 'Mexico', 'columnid': '2011', 'value': '24.9' },
{ 'rowid': 'Mexico', 'columnid': '2012', 'value': '30.1' },
{ 'rowid': 'Mexico', 'columnid': '2013', 'value': '22.2' },
{ 'rowid': 'Mexico', 'columnid': '2014', 'value': '29.3' },
{ 'rowid': 'Mexico', 'columnid': '2015', 'value': '32.1' },
{ 'rowid': 'Mexico', 'columnid': '2016', 'value': '35' },
{ 'rowid': 'Thailand', 'columnid': '2010', 'value': '15.9' },
{ 'rowid': 'Thailand', 'columnid': '2011', 'value': '19.8' },
{ 'rowid': 'Thailand', 'columnid': '2012', 'value': '21.8' },
{ 'rowid': 'Thailand', 'columnid': '2013', 'value': '23.5' },
{ 'rowid': 'Thailand', 'columnid': '2014', 'value': '24.8' },
{ 'rowid': 'Thailand', 'columnid': '2015', 'value': '29.9' },
{ 'rowid': 'Thailand', 'columnid': '2016', 'value': '32.6' },
{ 'rowid': 'Austria', 'columnid': '2010', 'value': '22' },
{ 'rowid': 'Austria', 'columnid': '2011', 'value': '21.3' },
{ 'rowid': 'Austria', 'columnid': '2012', 'value': '24.2' },
{ 'rowid': 'Austria', 'columnid': '2013', 'value': '23.2' },
{ 'rowid': 'Austria', 'columnid': '2014', 'value': '25' },
{ 'rowid': 'Austria', 'columnid': '2015', 'value': '26.7' },
{ 'rowid': 'Austria', 'columnid': '2016', 'value': '28.1' }
];
const dataSourceSettings = {
isJsonData: true,
adaptorType: 'Cell',
xDataMapping: 'rowid',
yDataMapping: 'columnid',
valueMapping: 'value'
};
const titleSettings = {
text: 'Most Visited Destinations by International Tourist Arrivals',
textStyle: {
size: '15px',
fontWeight: '500',
fontStyle: 'Normal',
fontFamily: 'Segoe UI'
}
};
const xAxis = {
labels: ['Austria', 'China', 'France', 'Germany', 'Italy', 'Mexico', 'Spain', 'Thailand', 'UK', 'USA']
};
const yAxis = {
labels: ['2010', '2011', '2012', '2013', '2014', '2015', '2016']
};
const cellSettings = {
border: {
radius: 4,
width: 1,
color: 'white'
},
showLabel: true,
format: '{value} M'
};
const paletteSettings = {
palette: [
{ color: '#DCD57E' },
{ color: '#A6DC7E' },
{ color: '#7EDCA2' },
{ color: '#6EB5D0' }
]
};
provide('heatmap', [Tooltip, Legend, Adaptor])
</script>
<template>
<div id="app">
<ejs-heatmap id="heatmap" :titleSettings='titleSettings' :xAxis='xAxis' :yAxis='yAxis'
:paletteSettings='paletteSettings' :dataSource='dataSource' :dataSourceSettings='dataSourceSettings'
:cellSettings='cellSettings'></ejs-heatmap>
</div>
</template>
<script>
import { HeatMapComponent, Tooltip, Legend, Adaptor } from '@syncfusion/ej2-vue-heatmap';
export default {
name: "App",
components: {
"ejs-heatmap": HeatMapComponent
},
data: function () {
return {
dataSource: [
{ 'rowid': 'France', 'columnid': '2010', 'value': '77.6' },
{ 'rowid': 'France', 'columnid': '2011', 'value': '79.4' },
{ 'rowid': 'France', 'columnid': '2012', 'value': '80.8' },
{ 'rowid': 'France', 'columnid': '2013', 'value': '86.6' },
{ 'rowid': 'France', 'columnid': '2014', 'value': '83.7' },
{ 'rowid': 'France', 'columnid': '2015', 'value': '84.5' },
{ 'rowid': 'France', 'columnid': '2016', 'value': '82.6' },
{ 'rowid': 'USA', 'columnid': '2010', 'value': '60.6' },
{ 'rowid': 'USA', 'columnid': '2011', 'value': '65.4' },
{ 'rowid': 'USA', 'columnid': '2012', 'value': '70.8' },
{ 'rowid': 'USA', 'columnid': '2013', 'value': '73.8' },
{ 'rowid': 'USA', 'columnid': '2014', 'value': '75.3' },
{ 'rowid': 'USA', 'columnid': '2015', 'value': '77.5' },
{ 'rowid': 'USA', 'columnid': '2016', 'value': '77.6' },
{ 'rowid': 'Spain', 'columnid': '2010', 'value': '64.9' },
{ 'rowid': 'Spain', 'columnid': '2011', 'value': '52.6' },
{ 'rowid': 'Spain', 'columnid': '2012', 'value': '60.8' },
{ 'rowid': 'Spain', 'columnid': '2013', 'value': '65.6' },
{ 'rowid': 'Spain', 'columnid': '2014', 'value': '52.6' },
{ 'rowid': 'Spain', 'columnid': '2015', 'value': '68.5' },
{ 'rowid': 'Spain', 'columnid': '2016', 'value': '75.6' },
{ 'rowid': 'China', 'columnid': '2010', 'value': '55.6' },
{ 'rowid': 'China', 'columnid': '2011', 'value': '52.3' },
{ 'rowid': 'China', 'columnid': '2012', 'value': '54.8' },
{ 'rowid': 'China', 'columnid': '2013', 'value': '51.1' },
{ 'rowid': 'China', 'columnid': '2014', 'value': '55.6' },
{ 'rowid': 'China', 'columnid': '2015', 'value': '56.9' },
{ 'rowid': 'China', 'columnid': '2016', 'value': '59.3' },
{ 'rowid': 'Italy', 'columnid': '2010', 'value': '43.6' },
{ 'rowid': 'Italy', 'columnid': '2011', 'value': '43.2' },
{ 'rowid': 'Italy', 'columnid': '2012', 'value': '55.8' },
{ 'rowid': 'Italy', 'columnid': '2013', 'value': '50.1' },
{ 'rowid': 'Italy', 'columnid': '2014', 'value': '48.5' },
{ 'rowid': 'Italy', 'columnid': '2015', 'value': '50.7' },
{ 'rowid': 'Italy', 'columnid': '2016', 'value': '52.4' },
{ 'rowid': 'UK', 'columnid': '2010', 'value': '28.2' },
{ 'rowid': 'UK', 'columnid': '2011', 'value': '31.6' },
{ 'rowid': 'UK', 'columnid': '2012', 'value': '29.8' },
{ 'rowid': 'UK', 'columnid': '2013', 'value': '33.1' },
{ 'rowid': 'UK', 'columnid': '2014', 'value': '32.6' },
{ 'rowid': 'UK', 'columnid': '2015', 'value': '34.4' },
{ 'rowid': 'UK', 'columnid': '2016', 'value': '35.8' },
{ 'rowid': 'Germany', 'columnid': '2010', 'value': '26.8' },
{ 'rowid': 'Germany', 'columnid': '2011', 'value': '29' },
{ 'rowid': 'Germany', 'columnid': '2012', 'value': '26.8' },
{ 'rowid': 'Germany', 'columnid': '2013', 'value': '27.6' },
{ 'rowid': 'Germany', 'columnid': '2014', 'value': '33' },
{ 'rowid': 'Germany', 'columnid': '2015', 'value': '35' },
{ 'rowid': 'Germany', 'columnid': '2016', 'value': '35.6' },
{ 'rowid': 'Mexico', 'columnid': '2010', 'value': '23.2' },
{ 'rowid': 'Mexico', 'columnid': '2011', 'value': '24.9' },
{ 'rowid': 'Mexico', 'columnid': '2012', 'value': '30.1' },
{ 'rowid': 'Mexico', 'columnid': '2013', 'value': '22.2' },
{ 'rowid': 'Mexico', 'columnid': '2014', 'value': '29.3' },
{ 'rowid': 'Mexico', 'columnid': '2015', 'value': '32.1' },
{ 'rowid': 'Mexico', 'columnid': '2016', 'value': '35' },
{ 'rowid': 'Thailand', 'columnid': '2010', 'value': '15.9' },
{ 'rowid': 'Thailand', 'columnid': '2011', 'value': '19.8' },
{ 'rowid': 'Thailand', 'columnid': '2012', 'value': '21.8' },
{ 'rowid': 'Thailand', 'columnid': '2013', 'value': '23.5' },
{ 'rowid': 'Thailand', 'columnid': '2014', 'value': '24.8' },
{ 'rowid': 'Thailand', 'columnid': '2015', 'value': '29.9' },
{ 'rowid': 'Thailand', 'columnid': '2016', 'value': '32.6' },
{ 'rowid': 'Austria', 'columnid': '2010', 'value': '22' },
{ 'rowid': 'Austria', 'columnid': '2011', 'value': '21.3' },
{ 'rowid': 'Austria', 'columnid': '2012', 'value': '24.2' },
{ 'rowid': 'Austria', 'columnid': '2013', 'value': '23.2' },
{ 'rowid': 'Austria', 'columnid': '2014', 'value': '25' },
{ 'rowid': 'Austria', 'columnid': '2015', 'value': '26.7' },
{ 'rowid': 'Austria', 'columnid': '2016', 'value': '28.1' }
],
dataSourceSettings: {
isJsonData: true,
adaptorType: 'Cell',
xDataMapping: 'rowid',
yDataMapping: 'columnid',
valueMapping: 'value'
},
titleSettings: {
text: 'Most Visited Destinations by International Tourist Arrivals',
textStyle: {
size: '15px',
fontWeight: '500',
fontStyle: 'Normal',
fontFamily: 'Segoe UI'
}
},
xAxis: {
labels: ['Austria', 'China', 'France', 'Germany', 'Italy', 'Mexico', 'Spain', 'Thailand', 'UK', 'USA']
},
yAxis: {
labels: ['2010', '2011', '2012', '2013', '2014', '2015', '2016']
},
cellSettings: {
border: {
radius: 4,
width: 1,
color: 'white'
},
showLabel: true,
format: '{value} M'
},
paletteSettings: {
palette: [
{ color: '#DCD57E' },
{ color: '#A6DC7E' },
{ color: '#7EDCA2' },
{ color: '#6EB5D0' }
]
},
}
},
provide: {
heatmap: [Tooltip, Legend, Adaptor]
}
}
</script>
Empty points
The data points that use the null or undefined or empty string as value are considered as empty points. Empty data points are ignored and not displayed in the heat map, and these points are rendered with default palette. You can customize the empty data point color value using the emptyPointColor property.
<template>
<div id="app">
<ejs-heatmap id="heatmap" :xAxis='xAxis' :yAxis='yAxis' :dataSource='dataSource'
:legendSettings='legendSettings'></ejs-heatmap>
</div>
</template>
<script setup>
import { provide } from "vue";
import { HeatMapComponent as EjsHeatmap, Tooltip, Legend, Adaptor } from '@syncfusion/ej2-vue-heatmap';
const dataSource = [
[73, 39, 26, 39, 94, 0],
[93, 58, 53, 38, 26, 68],
[99, 28, null, 4, 66, 90],
[14, 26, 97, 69, 69, 3],
[7, 46, 47, 47, 88, 6],
[41, 55, 73, 23, "", 79],
[56, 69, 21, 86, 3, 33],
[45, 7, undefined, 81, 95, 79],
[60, 77, 74, 68, 88, 51],
[25, 25, 10, 12, 78, 14],
[25, 56, 55, 58, 12, 82],
[74, 33, 88, 23, 86, 59]
];
const xAxis = {
valueType: "DateTime",
minimum: new Date(2007, 0, 1),
intervalType: "Years",
labelFormat: "yyyy"
};
const yAxis = {
valueType: "Numeric"
};
const legendSettings = {
visible: false,
};
provide('heatmap', [Tooltip, Legend, Adaptor])
</script>
<template>
<div id="app">
<ejs-heatmap id="heatmap" :xAxis='xAxis' :yAxis='yAxis' :dataSource='dataSource'
:legendSettings='legendSettings'></ejs-heatmap>
</div>
</template>
<script>
import { HeatMapComponent, Tooltip, Legend, Adaptor } from '@syncfusion/ej2-vue-heatmap';
export default {
name: "App",
components: {
"ejs-heatmap": HeatMapComponent
},
data: function () {
return {
dataSource: [
[73, 39, 26, 39, 94, 0],
[93, 58, 53, 38, 26, 68],
[99, 28, null, 4, 66, 90],
[14, 26, 97, 69, 69, 3],
[7, 46, 47, 47, 88, 6],
[41, 55, 73, 23, "", 79],
[56, 69, 21, 86, 3, 33],
[45, 7, undefined, 81, 95, 79],
[60, 77, 74, 68, 88, 51],
[25, 25, 10, 12, 78, 14],
[25, 56, 55, 58, 12, 82],
[74, 33, 88, 23, 86, 59]
],
xAxis: {
valueType: "DateTime",
minimum: new Date(2007, 0, 1),
intervalType: "Years",
labelFormat: "yyyy"
},
yAxis: {
valueType: "Numeric"
},
legendSettings: {
visible: false,
},
}
},
provide: {
heatmap: [Tooltip, Legend, Adaptor]
}
}
</script>
Binding nested JSON data
In complex data binding, you can bind the nested JSON data to the data points in the heat map.
The nested data can be mapped using the xDataMapping, yDataMapping, valueMapping and bubbleDataMapping properties as string value concatenated by a dot.
<template>
<div id="app">
<ejs-heatmap id="heatmap" :titleSettings='titleSettings' :xAxis='xAxis' :yAxis='yAxis'
:paletteSettings='paletteSettings' :dataSource='dataSource' :dataSourceSettings='dataSourceSettings'
:cellSettings='cellSettings'></ejs-heatmap>
</div>
</template>
<script setup>
import { provide } from "vue";
import { HeatMapComponent as EjsHeatmap, Tooltip, Adaptor, Legend } from '@syncfusion/ej2-vue-heatmap';
const dataSource = [
{ 'Labels': { 'Xlabel': 'France', 'Ylabel': '2010' }, 'data': { 'value': '77.6' } },
{ 'Labels': { 'Xlabel': 'France', 'Ylabel': '2011' }, 'data': { 'value': '79.4' } },
{ 'Labels': { 'Xlabel': 'France', 'Ylabel': '2012' }, 'data': { 'value': '80.8' } },
{ 'Labels': { 'Xlabel': 'France', 'Ylabel': '2013' }, 'data': { 'value': '86.6' } },
{ 'Labels': { 'Xlabel': 'France', 'Ylabel': '2014' }, 'data': { 'value': '83.7' } },
{ 'Labels': { 'Xlabel': 'France', 'Ylabel': '2015' }, 'data': { 'value': '84.5' } },
{ 'Labels': { 'Xlabel': 'France', 'Ylabel': '2016' }, 'data': { 'value': '82.6' } },
{ 'Labels': { 'Xlabel': 'USA', 'Ylabel': '2010' }, 'data': { 'value': '60.6' } },
{ 'Labels': { 'Xlabel': 'USA', 'Ylabel': '2011' }, 'data': { 'value': '65.4' } },
{ 'Labels': { 'Xlabel': 'USA', 'Ylabel': '2012' }, 'data': { 'value': '70.8' } },
{ 'Labels': { 'Xlabel': 'USA', 'Ylabel': '2013' }, 'data': { 'value': '73.8' } },
{ 'Labels': { 'Xlabel': 'USA', 'Ylabel': '2014' }, 'data': { 'value': '75.3' } },
{ 'Labels': { 'Xlabel': 'USA', 'Ylabel': '2015' }, 'data': { 'value': '77.5' } },
{ 'Labels': { 'Xlabel': 'USA', 'Ylabel': '2016' }, 'data': { 'value': '77.6' } },
{ 'Labels': { 'Xlabel': 'Spain', 'Ylabel': '2010' }, 'data': { 'value': '64.9' } },
{ 'Labels': { 'Xlabel': 'Spain', 'Ylabel': '2011' }, 'data': { 'value': '52.6' } },
{ 'Labels': { 'Xlabel': 'Spain', 'Ylabel': '2012' }, 'data': { 'value': '60.8' } },
{ 'Labels': { 'Xlabel': 'Spain', 'Ylabel': '2013' }, 'data': { 'value': '65.6' } },
{ 'Labels': { 'Xlabel': 'Spain', 'Ylabel': '2014' }, 'data': { 'value': '52.6' } },
{ 'Labels': { 'Xlabel': 'Spain', 'Ylabel': '2015' }, 'data': { 'value': '68.5' } },
{ 'Labels': { 'Xlabel': 'Spain', 'Ylabel': '2016' }, 'data': { 'value': '75.6' } },
{ 'Labels': { 'Xlabel': 'China', 'Ylabel': '2010' }, 'data': { 'value': '55.6' } },
{ 'Labels': { 'Xlabel': 'China', 'Ylabel': '2011' }, 'data': { 'value': '52.3' } },
{ 'Labels': { 'Xlabel': 'China', 'Ylabel': '2012' }, 'data': { 'value': '54.8' } },
{ 'Labels': { 'Xlabel': 'China', 'Ylabel': '2013' }, 'data': { 'value': '51.1' } },
{ 'Labels': { 'Xlabel': 'China', 'Ylabel': '2014' }, 'data': { 'value': '55.6' } },
{ 'Labels': { 'Xlabel': 'China', 'Ylabel': '2015' }, 'data': { 'value': '56.9' } },
{ 'Labels': { 'Xlabel': 'China', 'Ylabel': '2016' }, 'data': { 'value': '59.3' } },
{ 'Labels': { 'Xlabel': 'Italy', 'Ylabel': '2010' }, 'data': { 'value': '43.6' } },
{ 'Labels': { 'Xlabel': 'Italy', 'Ylabel': '2011' }, 'data': { 'value': '43.2' } },
{ 'Labels': { 'Xlabel': 'Italy', 'Ylabel': '2012' }, 'data': { 'value': '55.8' } },
{ 'Labels': { 'Xlabel': 'Italy', 'Ylabel': '2013' }, 'data': { 'value': '50.1' } },
{ 'Labels': { 'Xlabel': 'Italy', 'Ylabel': '2014' }, 'data': { 'value': '48.5' } },
{ 'Labels': { 'Xlabel': 'Italy', 'Ylabel': '2015' }, 'data': { 'value': '50.7' } },
{ 'Labels': { 'Xlabel': 'Italy', 'Ylabel': '2016' }, 'data': { 'value': '52.4' } },
{ 'Labels': { 'Xlabel': 'UK', 'Ylabel': '2010' }, 'data': { 'value': '28.2' } },
{ 'Labels': { 'Xlabel': 'UK', 'Ylabel': '2011' }, 'data': { 'value': '31.6' } },
{ 'Labels': { 'Xlabel': 'UK', 'Ylabel': '2012' }, 'data': { 'value': '29.8' } },
{ 'Labels': { 'Xlabel': 'UK', 'Ylabel': '2013' }, 'data': { 'value': '33.1' } },
{ 'Labels': { 'Xlabel': 'UK', 'Ylabel': '2014' }, 'data': { 'value': '32.6' } },
{ 'Labels': { 'Xlabel': 'UK', 'Ylabel': '2015' }, 'data': { 'value': '34.4' } },
{ 'Labels': { 'Xlabel': 'UK', 'Ylabel': '2016' }, 'data': { 'value': '35.8' } },
{ 'Labels': { 'Xlabel': 'Germany', 'Ylabel': '2010' }, 'data': { 'value': '26.8' } },
{ 'Labels': { 'Xlabel': 'Germany', 'Ylabel': '2011' }, 'data': { 'value': '29' } },
{ 'Labels': { 'Xlabel': 'Germany', 'Ylabel': '2012' }, 'data': { 'value': '26.8' } },
{ 'Labels': { 'Xlabel': 'Germany', 'Ylabel': '2013' }, 'data': { 'value': '27.6' } },
{ 'Labels': { 'Xlabel': 'Germany', 'Ylabel': '2014' }, 'data': { 'value': '33' } },
{ 'Labels': { 'Xlabel': 'Germany', 'Ylabel': '2015' }, 'data': { 'value': '35' } },
{ 'Labels': { 'Xlabel': 'Germany', 'Ylabel': '2016' }, 'data': { 'value': '35.6' } },
{ 'Labels': { 'Xlabel': 'Mexico', 'Ylabel': '2010' }, 'data': { 'value': '23.2' } },
{ 'Labels': { 'Xlabel': 'Mexico', 'Ylabel': '2011' }, 'data': { 'value': '24.9' } },
{ 'Labels': { 'Xlabel': 'Mexico', 'Ylabel': '2012' }, 'data': { 'value': '30.1' } },
{ 'Labels': { 'Xlabel': 'Mexico', 'Ylabel': '2013' }, 'data': { 'value': '22.2' } },
{ 'Labels': { 'Xlabel': 'Mexico', 'Ylabel': '2014' }, 'data': { 'value': '29.3' } },
{ 'Labels': { 'Xlabel': 'Mexico', 'Ylabel': '2015' }, 'data': { 'value': '32.1' } },
{ 'Labels': { 'Xlabel': 'Mexico', 'Ylabel': '2016' }, 'data': { 'value': '35' } },
{ 'Labels': { 'Xlabel': 'Thailand', 'Ylabel': '2010' }, 'data': { 'value': '15.9' } },
{ 'Labels': { 'Xlabel': 'Thailand', 'Ylabel': '2011' }, 'data': { 'value': '19.8' } },
{ 'Labels': { 'Xlabel': 'Thailand', 'Ylabel': '2012' }, 'data': { 'value': '21.8' } },
{ 'Labels': { 'Xlabel': 'Thailand', 'Ylabel': '2013' }, 'data': { 'value': '23.5' } },
{ 'Labels': { 'Xlabel': 'Thailand', 'Ylabel': '2014' }, 'data': { 'value': '24.8' } },
{ 'Labels': { 'Xlabel': 'Thailand', 'Ylabel': '2015' }, 'data': { 'value': '29.9' } },
{ 'Labels': { 'Xlabel': 'Thailand', 'Ylabel': '2016' }, 'data': { 'value': '32.6' } },
{ 'Labels': { 'Xlabel': 'Austria', 'Ylabel': '2010' }, 'data': { 'value': '22' } },
{ 'Labels': { 'Xlabel': 'Austria', 'Ylabel': '2011' }, 'data': { 'value': '21.3' } },
{ 'Labels': { 'Xlabel': 'Austria', 'Ylabel': '2012' }, 'data': { 'value': '24.2' } },
{ 'Labels': { 'Xlabel': 'Austria', 'Ylabel': '2013' }, 'data': { 'value': '23.2' } },
{ 'Labels': { 'Xlabel': 'Austria', 'Ylabel': '2014' }, 'data': { 'value': '25' } },
{ 'Labels': { 'Xlabel': 'Austria', 'Ylabel': '2015' }, 'data': { 'value': '26.7' } },
{ 'Labels': { 'Xlabel': 'Austria', 'Ylabel': '2016' }, 'data': { 'value': '28.1' } }
];
const dataSourceSettings = {
isJsonData: true,
adaptorType: 'Cell',
xDataMapping: 'Labels.Xlabel',
yDataMapping: 'Labels.Ylabel',
valueMapping: 'data.value'
};
const titleSettings = {
text: 'Most Visited Destinations by International Tourist Arrivals',
textStyle: {
size: '15px',
fontWeight: '500',
fontStyle: 'Normal',
fontFamily: 'Segoe UI'
}
};
const xAxis = {
labels: ['Austria', 'China', 'France', 'Germany', 'Italy', 'Mexico', 'Spain', 'Thailand', 'UK', 'USA']
};
const yAxis = {
labels: ['2010', '2011', '2012', '2013', '2014', '2015', '2016']
};
const cellSettings = {
border: {
radius: 4,
width: 1,
color: 'white'
},
showLabel: true,
format: '{value} M'
};
const paletteSettings = {
palette: [
{ color: '#DCD57E' },
{ color: '#A6DC7E' },
{ color: '#7EDCA2' },
{ color: '#6EB5D0' }
]
};
provide('heatmap', [Tooltip, Legend, Adaptor])
</script>
<template>
<div id="app">
<ejs-heatmap id="heatmap" :titleSettings='titleSettings' :xAxis='xAxis' :yAxis='yAxis'
:paletteSettings='paletteSettings' :dataSource='dataSource' :dataSourceSettings='dataSourceSettings'
:cellSettings='cellSettings'></ejs-heatmap>
</div>
</template>
<script>
import { HeatMapComponent, Tooltip, Legend, Adaptor } from '@syncfusion/ej2-vue-heatmap';
export default {
name: "App",
components: {
"ejs-heatmap": HeatMapComponent
},
data: function () {
return {
dataSource: [
{ 'Labels': { 'Xlabel': 'France', 'Ylabel': '2010' }, 'data': { 'value': '77.6' } },
{ 'Labels': { 'Xlabel': 'France', 'Ylabel': '2011' }, 'data': { 'value': '79.4' } },
{ 'Labels': { 'Xlabel': 'France', 'Ylabel': '2012' }, 'data': { 'value': '80.8' } },
{ 'Labels': { 'Xlabel': 'France', 'Ylabel': '2013' }, 'data': { 'value': '86.6' } },
{ 'Labels': { 'Xlabel': 'France', 'Ylabel': '2014' }, 'data': { 'value': '83.7' } },
{ 'Labels': { 'Xlabel': 'France', 'Ylabel': '2015' }, 'data': { 'value': '84.5' } },
{ 'Labels': { 'Xlabel': 'France', 'Ylabel': '2016' }, 'data': { 'value': '82.6' } },
{ 'Labels': { 'Xlabel': 'USA', 'Ylabel': '2010' }, 'data': { 'value': '60.6' } },
{ 'Labels': { 'Xlabel': 'USA', 'Ylabel': '2011' }, 'data': { 'value': '65.4' } },
{ 'Labels': { 'Xlabel': 'USA', 'Ylabel': '2012' }, 'data': { 'value': '70.8' } },
{ 'Labels': { 'Xlabel': 'USA', 'Ylabel': '2013' }, 'data': { 'value': '73.8' } },
{ 'Labels': { 'Xlabel': 'USA', 'Ylabel': '2014' }, 'data': { 'value': '75.3' } },
{ 'Labels': { 'Xlabel': 'USA', 'Ylabel': '2015' }, 'data': { 'value': '77.5' } },
{ 'Labels': { 'Xlabel': 'USA', 'Ylabel': '2016' }, 'data': { 'value': '77.6' } },
{ 'Labels': { 'Xlabel': 'Spain', 'Ylabel': '2010' }, 'data': { 'value': '64.9' } },
{ 'Labels': { 'Xlabel': 'Spain', 'Ylabel': '2011' }, 'data': { 'value': '52.6' } },
{ 'Labels': { 'Xlabel': 'Spain', 'Ylabel': '2012' }, 'data': { 'value': '60.8' } },
{ 'Labels': { 'Xlabel': 'Spain', 'Ylabel': '2013' }, 'data': { 'value': '65.6' } },
{ 'Labels': { 'Xlabel': 'Spain', 'Ylabel': '2014' }, 'data': { 'value': '52.6' } },
{ 'Labels': { 'Xlabel': 'Spain', 'Ylabel': '2015' }, 'data': { 'value': '68.5' } },
{ 'Labels': { 'Xlabel': 'Spain', 'Ylabel': '2016' }, 'data': { 'value': '75.6' } },
{ 'Labels': { 'Xlabel': 'China', 'Ylabel': '2010' }, 'data': { 'value': '55.6' } },
{ 'Labels': { 'Xlabel': 'China', 'Ylabel': '2011' }, 'data': { 'value': '52.3' } },
{ 'Labels': { 'Xlabel': 'China', 'Ylabel': '2012' }, 'data': { 'value': '54.8' } },
{ 'Labels': { 'Xlabel': 'China', 'Ylabel': '2013' }, 'data': { 'value': '51.1' } },
{ 'Labels': { 'Xlabel': 'China', 'Ylabel': '2014' }, 'data': { 'value': '55.6' } },
{ 'Labels': { 'Xlabel': 'China', 'Ylabel': '2015' }, 'data': { 'value': '56.9' } },
{ 'Labels': { 'Xlabel': 'China', 'Ylabel': '2016' }, 'data': { 'value': '59.3' } },
{ 'Labels': { 'Xlabel': 'Italy', 'Ylabel': '2010' }, 'data': { 'value': '43.6' } },
{ 'Labels': { 'Xlabel': 'Italy', 'Ylabel': '2011' }, 'data': { 'value': '43.2' } },
{ 'Labels': { 'Xlabel': 'Italy', 'Ylabel': '2012' }, 'data': { 'value': '55.8' } },
{ 'Labels': { 'Xlabel': 'Italy', 'Ylabel': '2013' }, 'data': { 'value': '50.1' } },
{ 'Labels': { 'Xlabel': 'Italy', 'Ylabel': '2014' }, 'data': { 'value': '48.5' } },
{ 'Labels': { 'Xlabel': 'Italy', 'Ylabel': '2015' }, 'data': { 'value': '50.7' } },
{ 'Labels': { 'Xlabel': 'Italy', 'Ylabel': '2016' }, 'data': { 'value': '52.4' } },
{ 'Labels': { 'Xlabel': 'UK', 'Ylabel': '2010' }, 'data': { 'value': '28.2' } },
{ 'Labels': { 'Xlabel': 'UK', 'Ylabel': '2011' }, 'data': { 'value': '31.6' } },
{ 'Labels': { 'Xlabel': 'UK', 'Ylabel': '2012' }, 'data': { 'value': '29.8' } },
{ 'Labels': { 'Xlabel': 'UK', 'Ylabel': '2013' }, 'data': { 'value': '33.1' } },
{ 'Labels': { 'Xlabel': 'UK', 'Ylabel': '2014' }, 'data': { 'value': '32.6' } },
{ 'Labels': { 'Xlabel': 'UK', 'Ylabel': '2015' }, 'data': { 'value': '34.4' } },
{ 'Labels': { 'Xlabel': 'UK', 'Ylabel': '2016' }, 'data': { 'value': '35.8' } },
{ 'Labels': { 'Xlabel': 'Germany', 'Ylabel': '2010' }, 'data': { 'value': '26.8' } },
{ 'Labels': { 'Xlabel': 'Germany', 'Ylabel': '2011' }, 'data': { 'value': '29' } },
{ 'Labels': { 'Xlabel': 'Germany', 'Ylabel': '2012' }, 'data': { 'value': '26.8' } },
{ 'Labels': { 'Xlabel': 'Germany', 'Ylabel': '2013' }, 'data': { 'value': '27.6' } },
{ 'Labels': { 'Xlabel': 'Germany', 'Ylabel': '2014' }, 'data': { 'value': '33' } },
{ 'Labels': { 'Xlabel': 'Germany', 'Ylabel': '2015' }, 'data': { 'value': '35' } },
{ 'Labels': { 'Xlabel': 'Germany', 'Ylabel': '2016' }, 'data': { 'value': '35.6' } },
{ 'Labels': { 'Xlabel': 'Mexico', 'Ylabel': '2010' }, 'data': { 'value': '23.2' } },
{ 'Labels': { 'Xlabel': 'Mexico', 'Ylabel': '2011' }, 'data': { 'value': '24.9' } },
{ 'Labels': { 'Xlabel': 'Mexico', 'Ylabel': '2012' }, 'data': { 'value': '30.1' } },
{ 'Labels': { 'Xlabel': 'Mexico', 'Ylabel': '2013' }, 'data': { 'value': '22.2' } },
{ 'Labels': { 'Xlabel': 'Mexico', 'Ylabel': '2014' }, 'data': { 'value': '29.3' } },
{ 'Labels': { 'Xlabel': 'Mexico', 'Ylabel': '2015' }, 'data': { 'value': '32.1' } },
{ 'Labels': { 'Xlabel': 'Mexico', 'Ylabel': '2016' }, 'data': { 'value': '35' } },
{ 'Labels': { 'Xlabel': 'Thailand', 'Ylabel': '2010' }, 'data': { 'value': '15.9' } },
{ 'Labels': { 'Xlabel': 'Thailand', 'Ylabel': '2011' }, 'data': { 'value': '19.8' } },
{ 'Labels': { 'Xlabel': 'Thailand', 'Ylabel': '2012' }, 'data': { 'value': '21.8' } },
{ 'Labels': { 'Xlabel': 'Thailand', 'Ylabel': '2013' }, 'data': { 'value': '23.5' } },
{ 'Labels': { 'Xlabel': 'Thailand', 'Ylabel': '2014' }, 'data': { 'value': '24.8' } },
{ 'Labels': { 'Xlabel': 'Thailand', 'Ylabel': '2015' }, 'data': { 'value': '29.9' } },
{ 'Labels': { 'Xlabel': 'Thailand', 'Ylabel': '2016' }, 'data': { 'value': '32.6' } },
{ 'Labels': { 'Xlabel': 'Austria', 'Ylabel': '2010' }, 'data': { 'value': '22' } },
{ 'Labels': { 'Xlabel': 'Austria', 'Ylabel': '2011' }, 'data': { 'value': '21.3' } },
{ 'Labels': { 'Xlabel': 'Austria', 'Ylabel': '2012' }, 'data': { 'value': '24.2' } },
{ 'Labels': { 'Xlabel': 'Austria', 'Ylabel': '2013' }, 'data': { 'value': '23.2' } },
{ 'Labels': { 'Xlabel': 'Austria', 'Ylabel': '2014' }, 'data': { 'value': '25' } },
{ 'Labels': { 'Xlabel': 'Austria', 'Ylabel': '2015' }, 'data': { 'value': '26.7' } },
{ 'Labels': { 'Xlabel': 'Austria', 'Ylabel': '2016' }, 'data': { 'value': '28.1' } }
],
dataSourceSettings: {
isJsonData: true,
adaptorType: 'Cell',
xDataMapping: 'Labels.Xlabel',
yDataMapping: 'Labels.Ylabel',
valueMapping: 'data.value'
},
titleSettings: {
text: 'Most Visited Destinations by International Tourist Arrivals',
textStyle: {
size: '15px',
fontWeight: '500',
fontStyle: 'Normal',
fontFamily: 'Segoe UI'
}
},
xAxis: {
labels: ['Austria', 'China', 'France', 'Germany', 'Italy', 'Mexico', 'Spain', 'Thailand', 'UK', 'USA']
},
yAxis: {
labels: ['2010', '2011', '2012', '2013', '2014', '2015', '2016']
},
cellSettings: {
border: {
radius: 4,
width: 1,
color: 'white'
},
showLabel: true,
format: '{value} M'
},
paletteSettings: {
palette: [
{ color: '#DCD57E' },
{ color: '#A6DC7E' },
{ color: '#7EDCA2' },
{ color: '#6EB5D0' }
]
},
}
},
provide: {
heatmap: [Tooltip, Legend, Adaptor]
}
}
</script>