1. How to make the navigator follow the new data if the navigator is in the far right corner?
Please check this gallery page for an example of a dynamic/live stockchart where the position of the slider is updated as new data is added to the chart.
2. How to make a gap at the beginning as shown in the picture?
You can set the x-axis viewPortMaximum to a value greater than the last datapoint to add gap towards the right side of the chart as per your requirement from the screenshot.
—
Thangaraj Raman
Team CanvasJS
The range between the datapoints in your example is in minutes, however, you are setting the intervalType to hour, due to which axis labels are missing since labels are outside the viewport range. Setting x-axis viewportMinimum seems to be working fine in your case.
Please check this JSFiddle for a working example.
—
Thangaraj Raman
Team CanvasJS
You can read a specific row from the CSV file by its index / header. Please take a look at this documentation page for a step-by-step tutorial on rendering charts with data from a CSV file and parsing it. Also, please refer to this article for more information on parsing CSV data.
—
Thangaraj Raman
Team CanvasJS
You can publish Google-Sheet as CSV and use the URL generated to fetch data using jQuery AJAX as shown in this JSFiddle.
—
Thangaraj Raman
Team CanvasJS
The x-axis cannot be positioned to the middle of the chart as of now. However, you can create a multi-series area chart with positive and negative values to achieve your requirement.
Please check this JSFiddle for a working example.
—
Thangaraj Raman
Team CanvasJS
You can use labelFormatter function instead of valueFormatString and set the label format using the formatNumber() method. Please take a look at the code snippet below.
labelFormatter: function(e) {
if(e.value >= 0 && e.value <= 1)
return CanvasJS.formatNumber(e.value, "0.00");
else if (e.value >= 1 && e.value <=10 )
return CanvasJS.formatNumber(e.value, "0.0");
else
return CanvasJS.formatNumber(e.value, "0");
}
Please check this updated JSFiddle for a working example.
—
Thangaraj Raman
Team CanvasJS
In order to change the background color of the chart using CSS, you will have to first set the chart backgroundColor property to transparent. You can then, apply CSS styles to the chart container using the chart id.
Please check this JSFiddle for a working example similar to your requirement, which shows how to set gradient as chart background using CSS.
—
Thangaraj Raman
Team CanvasJS
Sorry, it is not possible to display a tooltip for stripline labels as of now. However, as a workaround, you can position the stripline label to the center of the plot area using the labelAlign property and add a scatter point for displaying the tooltip content. Please take a look at the code snippet below:
chart.addTo("data", {
type: "scatter",
markerSize: 0,
highlightEnabled: false,
toolTipContent: "Content to be displayed on hover",
dataPoints: [{
x: (chart.axisX[0].viewportMaximum + chart.axisX[0].viewportMinimum) / 2 ,
y: chart.axisY[0].stripLines[0].value
}]
})
Please check this JSFiddle for a working example.
—
Thangaraj Raman
Team CanvasJS
It looks like you are setting the axisX interval manually due to which the extra labels -1 and 1 are shown. Based on the interval & other factors, the axis range is calculated & hence the extra labels are added in this case. You can overcome this behavior by either not setting interval when there are fewer datapoints or by manually setting the axis range.
Please take a look at this JSFiddle for a working example.
—
Thangaraj Raman
Team CanvasJS
You can update the position of the scatter datapoints on resizing the window by calculating the width of the index labels and using convertPixeltoValue. Please check the code snippet below:
window.onresize = function() {
indexLabelOffset = (chart.width < 700) ? 5 : 2 ;
for(var i = 0; i < customLinesData.length; i++) {
for(var j = 0; j < scatterDps.length; j++) {
if( scatterDps[j].indexLabel === "\u25C0 " + customLinesData[i].label) {
indexLabelWidth = getWidth(customLinesData[i].label);
scatterDps[j].x = customLinesData[i].x + chart.axisX[0].convertPixelToValue(indexLabelWidth) / 2 + indexLabelOffset;
}
}
}
chart.render();
};
Please take a look at this updated JSFiddle for a working example.
—
Thangaraj Raman
Team CanvasJS
Striplines are drawn from end to end across the full width/height of the plot-area. However, in your case, you can use a multi-series line chart with interactivity disabled and 2 datapoints each to represent the start and end coordinates of the line. To display text representing each line, you can use a scatter chart with indexlabels.
Please take a look at this JSFiddle for a working example.
—
Thangaraj Raman
Team CanvasJS
To update the y value of a datapoint using a dropdown menu you need to update the chart options / data based on the options selected from the dropdown list. Please check the code snippet below.
var country = document.getElementById("country");
country.addEventListener( "change", function(){
for(var i = 0; i < chart.options.data[0].dataPoints.length; i++) {
if(country.options[country.selectedIndex].text === chart.options.data[0].dataPoints[i].label)
chart.options.data[0].dataPoints[i].y = Number(country.options[country.selectedIndex].value);
}
chart.render();
});
Please take a look at this JSFiddle for a working example.
—
Thangaraj Raman
Team CanvasJS
It seems to be working fine. Can you kindly create a sample project reproducing the issue you are facing and share it with us over Google Drive or OneDrive so that we can look into your code, run it locally at our end to understand the scenario better, and help you out?
—
Thangaraj Raman
Team CanvasJS
Striplines are drawn from end to end across the full width/height of the plot-area. You can use rangeArea chart with interactivity disabled for the corresponding dataseries to achieve your requirement.
Please take a look at this JSFiddle for a working example.
—
Thangaraj Raman
Team CanvasJS
You can pass x-value in date-time format and use valueFormatString to define how axis labels must be formatted before they appear on the x-axis.
—
Thangaraj Raman
Team CanvasJS