<!doctype html>
<html class="zc-html">
<head>
<meta charset="utf-8">
<title>ZingSoft Demo</title>
<script nonce="undefined" src="https://cdn.zingchart.com/zingchart.min.js"></script>
<style>
.chart--container {
height: 100%;
width: 100%;
min-height: 530px;
}
.zc-ref {
display: none;
}
</style>
</head>
<body class="zc-body">
<div id="myChart" class="chart--container">
<a href="https://www.zingchart.com/" rel="noopener" class="zc-ref">Powered by ZingChart</a>
</div>
<script>
ZC.LICENSE = ["569d52cefae586f634c54f86dc99e6a9", "b55b025e438fa8a98e32482b5f768ff5"]; // DEFINE DATA
// -----------------------------
let games = ['BRA vs CHI', 'COL vs URU', 'NED vs MEX', 'CRC vs GRE', 'FRA vs NGA', 'GER vs ALG', 'ARG vs SWI', 'BEL vs USA'];
// HELPER METHODS
// -----------------------------
let _r_ = (min, max) => {
return Math.round(min + (max - min) * Math.random());
};
// create fake data, we will plot distance travelled by all players per each minute of the full 90 mins game
let chartData = {},
g, m, r;
for (g = 0; g < games.length; g++) {
chartData[g] = [];
for (m = 0; m < 90; m++) {
// try to simulate original chart, majority of data is on the lower part
r = Math.random();
if (r >= 0 && r < 0.85) {
chartData[g].push([m, _r_(0, 100)]);
} else if (r >= 0.85 && r < 0.95) {
chartData[g].push([m, _r_(50, 300)]);
} else {
chartData[g].push([m, _r_(200, 800)]);
}
}
}
// CHART CONFIG
// -----------------------------
let chartConfig = {
type: 'scatter',
clustered: true,
title: {
text: 'Distance Travelled by Football Players',
adjustLayout: true
},
plot: {
clusterOffset: '5px',
marker: {
alpha: 0.5,
borderWidth: 0,
size: '4px'
}
},
plotarea: {
margin: 'dynamic'
},
scaleX: {
values: games,
item: {
fontSize: '13px',
fontWeight: 'bold'
},
label: {
text: 'Game'
},
lineWidth: 0,
offset: 0,
placement: 'opposite',
tick: {
visible: false
}
},
scaleY: {
guide: {
visible: false
},
label: {
text: 'Distance travelled (m)'
},
lineColor: '#aaa',
offset: 0,
tick: {
lineColor: '#aaa'
}
},
tooltip: {
text: 'Minute %scale-key-value: %node-value meters travelled'
},
series: []
};
for (g = 0; g < games.length; g++) {
let sdata = {
values: chartData[g],
clustered: true
};
chartConfig['series'].push(sdata);
}
// RENDER CHARTS
// -----------------------------
// window:load event for Javascript to run after HTML
// because this Javascript is injected into the document head
window.addEventListener('load', () => {
// Javascript code to execute after DOM content
zingchart.render({
id: 'myChart',
data: chartConfig,
output: 'svg'
});
});
</script>
</body>
</html>
// DEFINE DATA
// -----------------------------
let games = ['BRA vs CHI', 'COL vs URU', 'NED vs MEX', 'CRC vs GRE', 'FRA vs NGA', 'GER vs ALG', 'ARG vs SWI', 'BEL vs USA'];
// HELPER METHODS
// -----------------------------
let _r_ = (min, max) => {
return Math.round(min + (max - min) * Math.random());
};
// create fake data, we will plot distance travelled by all players per each minute of the full 90 mins game
let chartData = {}, g, m, r;
for (g = 0; g < games.length; g++) {
chartData[g] = [];
for (m = 0; m < 90; m++) {
// try to simulate original chart, majority of data is on the lower part
r = Math.random();
if (r >= 0 && r < 0.85) {
chartData[g].push([m, _r_(0, 100)]);
} else if (r >= 0.85 && r < 0.95) {
chartData[g].push([m, _r_(50, 300)]);
} else {
chartData[g].push([m, _r_(200, 800)]);
}
}
}
// CHART CONFIG
// -----------------------------
let chartConfig = {
type: 'scatter',
clustered: true,
title: {
text: 'Distance Travelled by Football Players',
adjustLayout: true
},
plot: {
clusterOffset: '5px',
marker: {
alpha: 0.5,
borderWidth: 0,
size: '4px'
}
},
plotarea: {
margin: 'dynamic'
},
scaleX: {
values: games,
item: {
fontSize: '13px',
fontWeight: 'bold'
},
label: {
text: 'Game'
},
lineWidth: 0,
offset: 0,
placement: 'opposite',
tick: {
visible: false
}
},
scaleY: {
guide: {
visible: false
},
label: {
text: 'Distance travelled (m)'
},
lineColor: '#aaa',
offset: 0,
tick: {
lineColor: '#aaa'
}
},
tooltip: {
text: 'Minute %scale-key-value: %node-value meters travelled'
},
series: []
};
for (g = 0; g < games.length; g++) {
let sdata = {
values: chartData[g],
clustered: true
};
chartConfig['series'].push(sdata);
}
// RENDER CHARTS
// -----------------------------
// window:load event for Javascript to run after HTML
// because this Javascript is injected into the document head
window.addEventListener('load', () => {
// Javascript code to execute after DOM content
zingchart.render({
id: 'myChart',
data: chartConfig,
output: 'svg'
});
});