23👍
Just extend the line chart and replace the xLabels you don’t want after your initialization
Chart.types.Line.extend({
name: "LineAlt",
initialize: function (data) {
Chart.types.Line.prototype.initialize.apply(this, arguments);
var xLabels = this.scale.xLabels
xLabels.forEach(function (label, i) {
if (i % 2 == 1)
xLabels[i] = '';
})
}
});
var lineChartData = {
labels: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
datasets: [
{
fillColor: "#79D1CF",
strokeColor: "#79D1CF",
data: [59, 80, 81, 56, 55, 40, 34, 43, 43, 12, 65, 65]
}
]
};
var ctx = document.getElementById("myChart").getContext("2d");
var myLine = new Chart(ctx).LineAlt(lineChartData);
Fiddle – http://jsfiddle.net/ttz5t3dx/
5👍
For anyone looking to achieve this on Chart JS V2 the following will work:
var options = {
scales: {
xAxes: [{
afterTickToLabelConversion: function(data){
var xLabels = data.ticks;
xLabels.forEach(function (labels, i) {
if (i % 2 == 1){
xLabels[i] = '';
}
});
}
}]
}
}
Then pass the options variable as usual into a:
myLineChart = new Chart(ctx, {
type: 'line',
data: data,
options: options
});`
3👍
To extend on potatopeelings answer, we can do:
var xLabels = this.scale.xLabels
var modVal = Math.ceil( xLabels.length / 10)
xLabels.forEach(function (label, i)
{
if (i % modVal != 0)
xLabels[i] = '';
})
to limit the number of labels (in this case 10) so your labels will never be crowded no matter how many data points you have.
2👍
At Chart Options, under xAxes you can specify the maxTickLimit property to whatever you like:
xAxes: [{
ticks: {
autoSkip:true,
maxTicksLimit:3
}
}]
Fiddle : https://jsfiddle.net/p63z7zys/1/
1👍
This was one of the trickiest things that I deal with while using ChartJs.
I’m going to share my solution: I just played with the chart options. First I will define some properties for my xAxe. Note that I’m formatting the label using the callback:
scales: {
xAxes: [{
id: "x-", stacked: false, ticks: {
autoSkip: false, callback: (label) => { return label + "TEST" } }
}
]}
To format the tooltip title I’m going to use callbacks options for the tooltips:
tooltips: {
callbacks: {
title : (tooltipItems, data) => {
var labelIndex = tooltipItems[0].index;
var realLabel = data.labels[labelIndex];
return realLabel + "TOOLTIP";
}
}
}
Using the chart options like that, I’m able to show different content for the x-axis labels and the corresponding tooltip titles:
You can find the full sample here.
Hope this helps.