<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>ZingSoft Demo</title>
<script nonce="undefined" src="https://cdn.zingchart.com/zingchart.min.js"></script>
<style></style>
</head>
<body>
<div id='myChart'></div>
<script>
ZC.LICENSE = ["569d52cefae586f634c54f86dc99e6a9", "b55b025e438fa8a98e32482b5f768ff5"];
var myConfig = {
type: "mixed",
title: {
text: 'Dynamic Labels'
},
plot: {
barWidth: "2px"
},
scaleX: {
itemsOverlap: true,
maxItems: 28,
labels: [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 16, 17, 18, 19, 20, 21, 1, 2, 3, 4, 5, 6, 7, 8, 9],
placement: 'opposite',
lineColor: 'none',
refLine: {
visible: false
},
tick: {
visible: false
}
},
scaleY: {
guide: {
visible: false
},
values: '0:27',
lineColor: 'none',
item: {
visible: false
},
tick: {
visible: false
},
markers: [{
type: "area",
range: [0, 20],
backgroundColor: "#c4c4c4",
alpha: 0.5
}]
},
series: [{
type: 'bar',
backgroundColor: 'grey',
values: [25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25]
},
{
type: 'scatter',
marker: {
backgroundColor: 'grey'
},
values: [25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25]
}
],
labels: [{
hook: 'node:plot=0,index=10',
width: 150,
height: 40,
offsetY: 85,
borderRadius: 20,
padding: 5,
backgroundColor: '#e91e63',
text: '#162',
fontSize: 16,
fontColor: 'white',
textAlign: 'left',
backgroundImage: 'http://demos.zingchart.com/view/ZC30JD22/icon_pet.png',
backgroundRepeat: 'no-repeat',
backgroundPosition: "110 5"
},
{
hook: 'node:plot=0,index=17',
width: 150,
height: 40,
offsetY: 85,
borderRadius: 20,
padding: 5,
backgroundColor: '#e91e63',
text: '#152',
fontSize: 16,
fontColor: 'white',
textAlign: 'left',
backgroundImage: 'http://demos.zingchart.com/view/ZC30JD22/icon_pet.png',
backgroundRepeat: 'no-repeat',
backgroundPosition: "110 5"
}
]
};
zingchart.render({
id: 'myChart',
data: myConfig,
height: 300,
width: "100%"
});
/**
* Handle labels to be responsive.
* This is not necessary, but will make the graph
* much more dynamic and usable in smaller windows.
*/
var labelsResetFlag = false;
zingchart.load = function(p) {
resizeGraphLabels(window.outerWidth);
}
window.onresize = function(p) {
resizeGraphLabels(p.currentTarget.outerWidth);
}
window.load = function(p) {
resizeGraphLabels(p.currentTarget.outerWidth);
}
function resizeGraphLabels(windowWidth) {
var graphJSON = {};
var labelsArray;
if (windowWidth < 768) {
if (!labelsResetFlag) {
labelsResetFlag = true;
// make a deep copy otherwise we will have changed original graph JSON and the API 'setdata' call willnot work below
graphJSON = JSON.parse(JSON.stringify(myConfig));
labelsArray = graphJSON.labels;
for (var i = 0; i < labelsArray.length; i++) {
labelsArray[i].width = 90;
labelsArray[i].height = 30;
labelsArray[i].fontSize = 15;
labelsArray[i].offsetY = 95,
labelsArray[i].backgroundPosition = "55 0";
}
zingchart.exec('myChart', 'setdata', {
data: graphJSON
});
}
} else {
if (labelsResetFlag) {
labelsResetFlag = false;
zingchart.exec('myChart', 'setdata', {
data: myConfig
})
}
}
}
</script>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>ZingSoft Demo</title>
<script src="https://cdn.zingchart.com/zingchart.min.js"></script>
</head>
<body>
<div id='myChart'></div>
</body>
</html>
var myConfig = {
type: "mixed",
title: {
text: 'Dynamic Labels'
},
plot: {
barWidth: "2px"
},
scaleX: {
itemsOverlap: true,
maxItems: 28,
labels: [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 16, 17, 18, 19, 20, 21, 1, 2, 3, 4, 5, 6, 7, 8, 9],
placement: 'opposite',
lineColor: 'none',
refLine: {
visible: false
},
tick: {
visible: false
}
},
scaleY: {
guide: {
visible: false
},
values: '0:27',
lineColor: 'none',
item: {
visible: false
},
tick: {
visible: false
},
markers: [{
type: "area",
range: [0, 20],
backgroundColor: "#c4c4c4",
alpha: 0.5
}]
},
series: [{
type: 'bar',
backgroundColor: 'grey',
values: [25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25]
},
{
type: 'scatter',
marker: {
backgroundColor: 'grey'
},
values: [25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25]
}
],
labels: [{
hook: 'node:plot=0,index=10',
width: 150,
height: 40,
offsetY: 85,
borderRadius: 20,
padding: 5,
backgroundColor: '#e91e63',
text: '#162',
fontSize: 16,
fontColor: 'white',
textAlign: 'left',
backgroundImage: 'http://demos.zingchart.com/view/ZC30JD22/icon_pet.png',
backgroundRepeat: 'no-repeat',
backgroundPosition: "110 5"
},
{
hook: 'node:plot=0,index=17',
width: 150,
height: 40,
offsetY: 85,
borderRadius: 20,
padding: 5,
backgroundColor: '#e91e63',
text: '#152',
fontSize: 16,
fontColor: 'white',
textAlign: 'left',
backgroundImage: 'http://demos.zingchart.com/view/ZC30JD22/icon_pet.png',
backgroundRepeat: 'no-repeat',
backgroundPosition: "110 5"
}
]
};
zingchart.render({
id: 'myChart',
data: myConfig,
height: 300,
width: "100%"
});
/**
* Handle labels to be responsive.
* This is not necessary, but will make the graph
* much more dynamic and usable in smaller windows.
*/
var labelsResetFlag = false;
zingchart.load = function(p) {
resizeGraphLabels(window.outerWidth);
}
window.onresize = function(p) {
resizeGraphLabels(p.currentTarget.outerWidth);
}
window.load = function(p) {
resizeGraphLabels(p.currentTarget.outerWidth);
}
function resizeGraphLabels(windowWidth) {
var graphJSON = {};
var labelsArray;
if (windowWidth < 768) {
if (!labelsResetFlag) {
labelsResetFlag = true;
// make a deep copy otherwise we will have changed original graph JSON and the API 'setdata' call willnot work below
graphJSON = JSON.parse(JSON.stringify(myConfig));
labelsArray = graphJSON.labels;
for (var i = 0; i < labelsArray.length; i++) {
labelsArray[i].width = 90;
labelsArray[i].height = 30;
labelsArray[i].fontSize = 15;
labelsArray[i].offsetY = 95,
labelsArray[i].backgroundPosition = "55 0";
}
zingchart.exec('myChart', 'setdata', {
data: graphJSON
});
}
} else {
if (labelsResetFlag) {
labelsResetFlag = false;
zingchart.exec('myChart', 'setdata', {
data: myConfig
})
}
}
}