highchart csv export custom filename and value - javascript
Please refer below JS fiddle link.
https://jsfiddle.net/2pd1natw/1/
// this is my JS for reference
$(function () {
var k = 0;
$('#container').highcharts({
chart: {
type: 'column',
zoomType: 'xy',
events: {
drilldown: function (e){
if (!e.seriesOptions) {
var chart = this,
drilldowns = {
'2015':{
name: '2015',
data: [
['Q4-2015',89]
]
},
'2016':{
name: '2016',
data: [
['Q2-2016',95],
['Q3-2016',99]
]
}
},
drilldownsLines = {
'2015':{
type: 'spline',
name: '2015',
data: [
['Q4-2015',11.45]
],
yAxis: 1
},
'2016':{
type: 'spline',
name: '2016',
yAxis: 1,
data: [
['Q2-2016',11.2],
['Q3-2016',11.5]
]
}
},
series = drilldowns[e.point.name],
seriesLine = drilldownsLines[e.point.name];
chart.addSingleSeriesAsDrilldown(e.point, series);
chart.addSingleSeriesAsDrilldown(e.point, seriesLine);
chart.applyDrilldown();
}
}
}
},
title: {
text: 'Rental & Capital Value Trend'
},
exporting: {
enabled: true,
csv:{
columnHeaderFormatter:function(item, key, series){
if(key === '' || key === undefined){
return 'Period';
}else if(key === 'y' && k == 0){
k = k + 1;
return 'Rental Value (INR/SF/Month)';
}else if(key === 'y' && k == 1){
k = 0;
return 'Capital Value (INR/SF)';
}
}
},
buttons:{
contextButton:{
menuItems: [{
textKey: 'downloadCSV',
onclick: function (){
this.downloadCSV();
}
}]
}
}
},
xAxis: {
type: 'category',
},
yAxis: [{
min: 0,
title: {
text: 'Rental Value (INR/SF/Month)'
},
labels: {
format: '{value}'
}
}, {
min:0,
tickInterval:5,
title: {
text: 'Capital Value (INR/SF)'
},
labels: {
format: '{value} K'
},
opposite:true
}],
tooltip:{
formatter:function(){
var s='';
$.each(this.points, function () {
if(this.series.type == 'spline'){
s += '<br/>Capital Value : ' + this.y+ 'K';
}else{
s += '<br/> Rental Value : ' + this.y;
}
});
return s;
},
shared:true
},
legend: {
layout: 'horizontal',
align: 'left',
size: '12px',
x: 50,
verticalAlign: 'bottom',
y: 20,
floating: true
},
plotOptions: {
series: {
borderWidth: 0,
dataLabels: {
enabled: false
}
}
},
series: [{
name: 'Renatl Value (INR/SFT/Month)',
color: '#EE8908',
data: [
{
name: '2015',
y: 89,
drilldown: true
}, {
name: '2016',
y: 90,
drilldown: true
}
]
},{
name:'Capital Value (INR/SF)',
color:'#F8BB6C',
type:'spline',
yAxis:1,
data:[
{
name:'2015',
y:11.45
},{
name:'2016',
y:15.22
}
],
tooltip: {
valueSuffix: 'K'
}
}
],
drilldown: {
/*activeAxisLabelStyle: {
textDecoration: 'none'
},*/
series: []
}
});
});
There are two scenarios where I got stuck.
when I try to export chart as csv after drill down downloaded file name should be "Quarterly rental-capital trend" and before drill down "Yearly rental-capital trend".
e.g. before drill down file name should be like "Yearly rental-capital trend.csv"
after drill down file name should be like "Quarterly rental-capital trend.csv"
after exporting to csv the capital value should be append with "K".
e.g. period | rental value | capital value
2015 | 90 | 11.15 K
Any help will be appreciated and thanks and advance.
Related
highcharts Area chart with x and y values?
i tried to create this charts with area chart but i can't get it to work : here is the jsfiddle : http://jsfiddle.net/okc8q0zn/ $(function () { $('#container').highcharts({ chart: { type: 'area' }, xAxis: { categories: [67,69] }, credits: { enabled: false }, series: [ { name: '67', data: [24,24], color: '#0F0' }, { name: '69', data: [ 17,17], color: '#00F' }] }); }); thank you.
You will need to customize the xAxisand the yAxis to only show the desired values and some modification on the series too like this : xAxis: { max: 80, tickInterval: 1, tickWidth: 0, labels: { step: 1, formatter: function() { if (this.value === 67 || this.value === 69) { return this.value; } } } }, yAxis: { max: 30, tickInterval: 1, tickWidth: 0, gridLineWidth:0, labels: { step: 1, formatter: function() { if (this.value === 17 || this.value === 24) { return this.value; } } } }, series: [{ name: '67', data: [{ x: 0, y: 17 }, { x: 69, y: 17 }], color: 'rgba(30,80,250,0.5)' }, { name: '69', data: [{ x: 0, y: 24 }, { x: 67, y: 24 }], color: 'rgba(250,250,50,0.3)' }] Fiddle
Stuck on the final bits of a multi series line chart
I built a multi series Highcharts https://www.highcharts.com/ line chart with irregular time data. It's almost there, but I'm doing something wrong with the data and/or data formatting. Anyone have a hint or two to throw my way? The date from the database was converted from '02/03/2009' to javascript time in php using $date = strtotime($data['As of Date'])*1000; The other value is a dollar amount. I haven't yet added the filtered data for 3MO, 6MO, 1YR, 5YR, 10YR Here is the jsfiddle https://jsfiddle.net/madmichael/th41g4yt/ $( document ).ready(function() { createChart(); }); function createChart(chartingOptions) { var options = { chart: { renderTo: 'container', type: 'line', zoomType: 'xy', events: { load: function(event) { var total = 0; // get total of data for (var i = 0, len = this.series[0].yData.length; i < len; i++) { total += this.series[0].yData[i]; } var text = this.renderer.text( 'Total: $' + Highcharts.numberFormat(total, 0, '.', ','), this.plotLeft, this.plotTop + 20 ).attr({ zIndex: 5 }).add() // write it to the upper left hand corner } } }, navigator: { enabled: false }, scrollbar: { enabled: false }, rangeSelector: { inputEnabled: false, allButtonsEnabled: true, /* buttons: [[]], */ buttons: [ { type: 'all', text: 'All' }, { type: 'month', count: 3, text: '3MO' }, { type: 'month', count: 6, text: '6MO' }, { type: 'year', text: '1YR', count: 1 }, { type: 'year', text: '5YR', count: 5 }, { type: 'year', text: '10YR', count: 10 }], buttonTheme: { width: 60 }, selected: 0 }, tooltip: { backgroundColor: null, borderWidth: 0, shadow: false, useHTML: true, style: { padding: 0 }, pointFormat: '$' + '{point.y:,.0f}' /* formatter: function() { return Highcharts.dateFormat('%b %d, %Y', point.x) + ': $ {point.y:,.1f}'; } */ }, xAxis: { type: 'datetime', labels: { formatter: function() { return Highcharts.dateFormat('%b-%Y', this.value); } } }, yAxis: { type: 'linear', labels: { formatter: function () { if(this.value >= 0 ){ return '$' + this.value / 1000+'k'; }else{ return '-$' + this.value / 1000*-1+'k'; } } } }, series: [{name: 'Investment Fund (A)',fundtype: 'Load',data: [[1483164000000,37149],[1451541600000,37247],[1420005600000,37071],[1388469600000,33407],[1356933600000,19881],[1325311200000,14132],[1293775200000,21541],[1262239200000,18343],[1480485600000,36659],[1448863200000,39677],[1417327200000,38070],[1385791200000,32212],[1354255200000,18197],[1322632800000,14132],[1291096800000,20173],[1259560800000,17399],[1477890000000,34171],[1446267600000,39069],[1414731600000,36522],[1383195600000,30429],[1351659600000,18468],[1320037200000,14848],[1288501200000,20250],[1256965200000,15703],[1475211600000,36503],[1443589200000,36071],[1412053200000,34602],[1380517200000,29214],[1348981200000,17752],[1317358800000,13048],[1285822800000,19287],[1254286800000,17861],[1472619600000,35249],[1440997200000,38775],[1409461200000,36542],[1377925200000,27548],[1346389200000,16784],[1314766800000,15642],[1283230800000,16994],[1251694800000,16821],[1469941200000,32741],[1438318800000,42537],[1406782800000,34230],[1375246800000,28273],[1343710800000,16203],[1312088400000,17674],[1280552400000,18478],[1249016400000,14335],[1467262800000,29782],[1435640400000,40245],[1404104400000,36150],[1372568400000,26157],[1341032400000,16861],[1309410000000,19707],[1277874000000,17013],[1246338000000,13083],[1496206800000,41636],[1464670800000,33015],[1433048400000,40656],[1401512400000,34720],[1369976400000,26850],[1338440400000,16010],[1306818000000,20963],[1275282000000,19441],[1243746000000,12563],[1493528400000,40010],[1461992400000,32603],[1430370000000,39814],[1398834000000,33779],[1367298000000,25205],[1335762000000,17229],[1304139600000,21233],[1272603600000,21426],[1241067600000,10732],[1490936400000,39794],[1459400400000,33054],[1427778000000,39304],[1396242000000,34798],[1364706000000,24063],[1333170000000,17771],[1301547600000,21021],[1270011600000,20983],[1238475600000,8940],[1456725600000,30977],[1330495200000,17307],[1488261600000,40696],[1425103200000,39285],[1393567200000,34955],[1362031200000,22011],[1298872800000,21233],[1267336800000,19268],[1235800800000,7534],[1233640800000,9422],[1485842400000,37149],[1454220000000,30233],[1422684000000,35856],[1391148000000,33603],[1359612000000,22108],[1327989600000,15990],[1296453600000,21021],[1264917600000,18459]]},{name: 'Investment Fund (A)',fundtype: 'No Load',data: [[1483164000000,39428],[1451541600000,39532],[1420005600000,39345],[1388469600000,35456],[1356933600000,21101],[1325311200000,14999],[1293775200000,22863],[1262239200000,19468],[1480485600000,38908],[1448863200000,42111],[1417327200000,40406],[1385791200000,34188],[1354255200000,19314],[1322632800000,14999],[1291096800000,21411],[1259560800000,18466],[1477890000000,36267],[1446267600000,41466],[1414731600000,38763],[1383195600000,32295],[1351659600000,19601],[1320037200000,15759],[1288501200000,21493],[1256965200000,16667],[1475211600000,38742],[1443589200000,38284],[1412053200000,36725],[1380517200000,31006],[1348981200000,18841],[1317358800000,13848],[1285822800000,20470],[1254286800000,18957],[1472619600000,37411],[1440997200000,41154],[1409461200000,38784],[1377925200000,29238],[1346389200000,17814],[1314766800000,16601],[1283230800000,18037],[1251694800000,17853],[1469941200000,34749],[1438318800000,45147],[1406782800000,36330],[1375246800000,30008],[1343710800000,17197],[1312088400000,18759],[1280552400000,19611],[1249016400000,15215],[1467262800000,31609],[1435640400000,42714],[1404104400000,38368],[1372568400000,27762],[1341032400000,17896],[1309410000000,20916],[1277874000000,18057],[1246338000000,13885],[1496206800000,44190],[1464670800000,35040],[1433048400000,43151],[1401512400000,36850],[1369976400000,28498],[1338440400000,16992],[1306818000000,22249],[1275282000000,20634],[1243746000000,13333],[1493528400000,42464],[1461992400000,34604],[1430370000000,42256],[1398834000000,35851],[1367298000000,26751],[1335762000000,18286],[1304139600000,22536],[1272603600000,22740],[1241067600000,11391],[1490936400000,42236],[1459400400000,35082],[1427778000000,41716],[1396242000000,36933],[1364706000000,25539],[1333170000000,18862],[1301547600000,22311],[1270011600000,22270],[1238475600000,9489],[1456725600000,32878],[1330495200000,18368],[1488261600000,43192],[1425103200000,41695],[1393567200000,37099],[1362031200000,23361],[1298872800000,22536],[1267336800000,20450],[1235800800000,7996],[1233640800000,10000],[1485842400000,39428],[1454220000000,32087],[1422684000000,38056],[1391148000000,35664],[1359612000000,23464], [1327989600000,16971],[1296453600000,22311],[1264917600000,19591]]},], plotOptions: { series: { events: { show: function () { var chart = this.chart, series = chart.series, i = series.length, otherSeries; while (i--) { otherSeries = series[i]; if (otherSeries != this && otherSeries.visible) { otherSeries.hide(); } } }, legendItemClick: function() { if(this.visible){ return false; } } } }, line: { marker: { enabled: false }, /* color: '".$attributes["line_color"]."', */ } }, legend: { layout: 'vertical', align: 'right', verticalAlign: 'top', x: -150, y: 100, floating: true, borderWidth: 1, backgroundColor: (Highcharts.theme && Highcharts.theme.legendBackgroundColor) || '#FFFFFF' }, credits: { enabled: false }, }; /* options.series[5] = { name: '5 Yrs', data: processed_five_years, visible: false }; */ var chart = new Highcharts.stockChart(options); Highcharts.setOptions({ lang: { decimalPoint: '.', thousandsSep: ',' } }); };
spline is not plotting after drilldown - HighCharts
I am working with highCharts drilldown. My graph is plotting proper before drilldown. The column and spline is properly getting plot according to X-axis and Y-axis in graph but after drilldown the graph spline is not draw according to Y-axis. I want to plot spline as like before drilldown. Here is my html <script src="http://code.highcharts.com/highcharts.js"></script> <script src="http://code.highcharts.com/modules/drilldown.js"></script> <div id="container" style="min-width: 310px; height: 400px; margin: 0 auto"></div> Here is my js code. $(function () { $('#container').highcharts({ chart: { type: 'column', zoomType: 'xy', events: { drilldown: function (e){ if (!e.seriesOptions) { var chart = this, drilldowns = { '2015':{ name: '2015', data: [ ['Q4-2015',89] ] }, '2016':{ name: '2016', data: [ ['Q2-2016',95], ['Q3-2016',99] ] } }, drilldownsLines = { '2015':{ type: 'spline', name: '2015', data: [ ['Q4-2015',11.45] ] }, '2016':{ type: 'spline', name: '2016', data: [ ['Q2-2016',11.2], ['Q3-2016',11.5] ] } }, series = drilldowns[e.point.name], seriesLine = drilldownsLines[e.point.name]; chart.addSingleSeriesAsDrilldown(e.point, series); chart.addSingleSeriesAsDrilldown(e.point, seriesLine); chart.applyDrilldown(); } } } }, title: { text: 'Rental & Capital Value Trend' }, xAxis: { type: 'category', }, yAxis: [{ min: 0, title: { text: 'Rental Value (INR/SF/Month)' }, labels: { format: '{value}' } }, { min:0, tickInterval:5, title: { text: 'Capital Value (INR/SF)' }, labels: { format: '{value} K' }, opposite:true }], tooltip:{ formatter:function(){ var s=''; $.each(this.points, function () { if(this.series.type == 'spline'){ s += '<br/>Capital Value : ' + this.y+ 'K'; }else{ s += '<br/> Rental Value : ' + this.y; } }); return s; }, shared:true }, legend: { layout: 'horizontal', align: 'left', size: '12px', x: 50, verticalAlign: 'bottom', y: 20, floating: true }, plotOptions: { series: { borderWidth: 0, dataLabels: { enabled: false } } }, series: [{ name: 'Renatl Value (INR/SFT/Month)', color: '#EE8908', data: [ { name: '2015', y: 89, drilldown: true }, { name: '2016', y: 90, drilldown: true } ] },{ name:'Capital Value (INR/SF)', color:'#F8BB6C', type:'spline', yAxis:1, data:[ { name:'2015', y:11.45 },{ name:'2016', y:15.22 } ], tooltip: { valueSuffix: 'K' } } ], drilldown: { /*activeAxisLabelStyle: { textDecoration: 'none' },*/ series: [] } }); });
On drilldown events you are creating new spline series and you don't specify y axis for them - by default they will be scaled with the use of the first y axis. Specify a correct yAxis (should be 1 in your example) for the series and the spline will be drawn as you expect. drilldownsLines = { '2015':{ type: 'spline', name: '2015', data: [ ['Q4-2015',11.45] ], yAxis: 1 }, '2016':{ type: 'spline', name: '2016', yAxis: 1, data: [ ['Q2-2016',11.2], ['Q3-2016',11.5] ] } }, example: https://jsfiddle.net/2pd1natw/
highcharts linechart color for dynamic data
I would to show my line chart into my html page but the filter date is always disabled and i haven't the data in xAxis, i don't know the cause of this kind of the problem ? Any help please ? my code is : function buildNumberElem(tabIn) { var tabOut = []; var data = []; console.log(tabIn); for (i in tabIn) { var daTmp = tabIn[i].split("/"); var da = Date.UTC(parseInt(daTmp[2]), parseInt(daTmp[1]), parseInt(daTmp[0])); if (tabOut[da]) { tabOut[da] = tabOut[da] + 1; } else { tabOut[da] = +1; } } for(i in tabOut){ var dataX = [i,tabOut[i]]; data.push(dataX); } return data; } // lineData var lineData = [{ name: 'RC', data: buildNumberElem(rc) },{ name: 'DAB', data: buildNumberElem(dab) }]; renderSinistersLineChart('line', lineData); $('#lineChart').highcharts('StockChart', { chart: { renderTo: 'container', type: 'line' }, scrollbar: { enabled: false }, navigator: { enabled: true }, rangeSelector : { allButtonsEnabled: true, buttons: [{ type: 'month', count: 3, text: 'Jours', dataGrouping: { forced: true, units: [['day', [1]]] } },{ type: 'all', text: 'Mois', dataGrouping: { forced: true, units: [['month', [1]]] } }], buttonTheme: { width: 60 }, selected: 2 }, title: { text: 'Déclarations de Sinistres', x: -20 //center }, subtitle: { text: 'du 01/01/'+ year +' au '+ today, x: -20 }, tooltip: { valueSuffix: ' sinistres', }, legend: { layout: 'vertical', align: 'right', verticalAlign: 'bottom', borderWidth: 0 }, // Dynamic DATA series: linedata , credits: { enabled: false }, exporting: { buttons: { contextButton: { text: 'Imprimer' } }, printButton: { enabled: true } } });
Plot always starts at 0, highstock spline chart
I have data like this var data = []; for(var i=1;i<201;i++){ data.push([i,(Math.random() * (80 - 40 + 1)) + 40]) } And I'm creating chart like this: $('.reactivityCont').highcharts('StockChart', { chart: { marginTop: 140 }, credits: { enabled: false }, rangeSelector : { selected : 1 }, scrollbar: { enabled: false }, navigator: { top : 40, xAxis: { labels: { formatter: function() { return this.value; } } } }, xAxis: { labels: { y: 50, formatter: function() { return this.value; } }, events: { setExtremes: function (e) { start = parseInt(e.min); koniec = parseInt(e.max); $('.nt').hide(); for(var i = start-1;i<koniec;i++){ $('.nt').eq(i).show(); } main(); } } }, series : [{ type: 'column', name : 'reactivity', data : data, showInLegend: false, tooltip: { valueDecimals: 2 } }, {type: 'spline', name: 'experiment 1', data: data2, color: 'green', visible: false, tooltip: { valueDecimals: 2 } }, {type: 'spline', name: 'experiment 2', data: data3, color: 'red', visible: false, tooltip: { valueDecimals: 2 } } ], legend :{ enabled: true, margin: 0 }, rangeSelector : { buttons: [ { type: 'millisecond', count: seqLength/5, text: '0.25' }, { type: 'millisecond', count: seqLength/3, text: '0.3' }, { type: 'millisecond', count: seqLength/2, text: '0.5' }, { type: 'all', text: '1.0' } ], inputEnabled: false, // it supports only days selected : 4 // all } }); But unfortunately, my plot starts with 0, but it should not, because there is no such a value. I tried fix it, e. g. by setting plotOptions:pointStart but that didn't work.
This is caused by using column type series, where columns always starts from 0. To prevent this set threshold: null, like this: series : [{ type: 'column', threshold: null, ... }]
You can use theXAxis's min param. For Example. xAxis: { labels: { formatter: function() { return this.value; } }, min: myInitValue, max: myEndValue } Hope It Helps.