删除chart.js中的x轴标签/文本

时间:2014-05-02 08:44:50

标签: javascript html5 charts chart.js

如何隐藏chart.js中显示的x轴标签/文本?

设置scaleShowLabels:false仅删除y轴标签。

<script>
    var options = {
        scaleFontColor: "#fa0",
        datasetStrokeWidth: 1,
        scaleShowLabels : false,
        animation : false,
        bezierCurve : true,
        scaleStartValue: 0,
    };
    var lineChartData = {
        labels : ["1","2","3","4","5","6","7"],
        datasets : [
            {
                fillColor : "rgba(151,187,205,0.5)",
                strokeColor : "rgba(151,187,205,1)",
                pointColor : "rgba(151,187,205,1)",
                pointStrokeColor : "#fff",
                data : [1,3,0,0,6,2,10]
            }
        ]

    }

var myLine = new Chart(document.getElementById("canvas").getContext("2d")).Line(lineChartData,options);

</script>

9 个答案:

答案 0 :(得分:89)

更新chart.js 2.1及以上

var chart = new Chart(ctx, {
    ...
    options:{
        scales:{
            xAxes: [{
                display: false //this will remove all the x-axis grid lines
            }]
        }
    }
});


var chart = new Chart(ctx, {
    ...
    options: {
        scales: {
            xAxes: [{
                ticks: {
                    display: false //this will remove only the label
                }
            }]
        }
    }
});

Reference: chart.js documentation

旧答案(当前版本为1.0 beta时编写)仅供以下参考:

为避免在chart.js中显示标签,您必须设置scaleShowLabels : false并避免通过labels

<script>
    var options = {
        ...
        scaleShowLabels : false
    };
    var lineChartData = {
        //COMMENT THIS LINE TO AVOID DISPLAYING THE LABELS
        //labels : ["1","2","3","4","5","6","7"],
        ... 
    }
    ...
</script>

答案 1 :(得分:15)

(此问题与In chart.js, Is it possible to hide x-axis label/text of bar chart if accessing from mobile?重复) 他们添加了选项,2.1.4(可能稍早一点)有它

var myLineChart = new Chart(ctx, {
    type: 'line',
    data: data,
    options: {
        scales: {
            xAxes: [{
                ticks: {
                    display: false
                }
            }]
        }
    }
}

答案 2 :(得分:11)

var lineChartData = {
    labels: ["", "", "", "", "", "", ""] // To hide horizontal labels
	,datasets : [
		{
			label: "My First dataset",
			fillColor : "rgba(220,220,220,0.2)",
			strokeColor : "rgba(220,220,220,1)",
			pointColor : "rgba(220,220,220,1)",
			pointStrokeColor : "#fff",
			pointHighlightFill : "#fff",
			pointHighlightStroke : "rgba(220,220,220,1)",
			
			data: [28, 48, 40, 19, 86, 27, 90]
		}
	]
}



window.onload = function(){
	var options = {
		scaleShowLabels : false // to hide vertical lables
	};
	var ctx = document.getElementById("canvas1").getContext("2d");
	window.myLine = new Chart(ctx).Line(lineChartData, options);

}

答案 3 :(得分:7)

现在面对删除Chartjs中的标签的问题。看起来文档得到了改进。 http://www.chartjs.org/docs/#getting-started-global-chart-configuration

Chart.defaults.global.legend.display = false;

此全局设置可防止图例显示在所有图表中。因为这对我来说已经足够了,所以我用它了。我不确定如何避免单个图表的传说。

答案 4 :(得分:6)

受christutty的回答启发,这是一个修改源但尚未经过彻底测试的解决方案。我还没有遇到任何问题。

在默认部分中,在第71行附近添加此行:

// Boolean - Omit x-axis labels
omitXLabels: true,

然后在第2215行附近,在buildScale方法中添加:

//if omitting x labels, replace labels with empty strings           
if(Chart.defaults.global.omitXLabels){
    var newLabels=[];
    for(var i=0;i<labels.length;i++){
        newLabels.push('');
    }
    labels=newLabels;
}

这也保留了工具提示。

答案 5 :(得分:4)

最简单的解决方案是:

scaleFontSize: 0

请参阅chart.js Document

smilar question

答案 6 :(得分:3)

如果您希望为工具提示保留标签,但不在条形图下方显示,则以下黑客可能会有用。我做了这个更改,用于私有内部网应用程序,并没有测试它的效率或副作用,但它做了我需要的。

在chart.js的第71行附近添加一个属性来隐藏条形标签:

// Boolean - Whether to show x-axis labels
barShowLabels: true,

在第1500行左右使用该属性来抑制更改this.endPoint(似乎需要计算代码的其他部分,因为如果我禁用了超过此行的任何内容,则图表的块会消失或呈现错误)。

if (this.xLabelRotation > 0) {
    if (this.ctx.barShowLabels) {
        this.endPoint -= Math.sin(toRadians(this.xLabelRotation)) * originalLabelWidth + 3;
    } else {
        // don't change this.endPoint
    }
}

在第1644行左右,使用该属性来禁止标签呈现:

if (ctx.barShowLabels) {    
    ctx.fillText(label, 0, 0);
}

我想对Chart.js源进行此更改,但不熟悉git并且没有时间进行严格测试,所以宁愿避免破坏任何内容。

答案 7 :(得分:2)

对于那些行不通的人,这是我在X轴上隐藏标签的方式-

options: {
    maintainAspectRatio: false,
    layout: {
      padding: {
        left: 1,
        right: 2,
        top: 2,
        bottom: 0,
      },
    },
    scales: {
      xAxes: [
        {
          time: {
            unit: 'Areas',
          },
          gridLines: {
            display: false,
            drawBorder: false,
          },
          ticks: {
            maxTicksLimit: 7,
            display: false, //this removed the labels on the x-axis
          },
          'dataset.maxBarThickness': 5,
        },
      ],

答案 8 :(得分:2)

这是chart.js ^3.0.0

删除 x 轴标签和网格图线

var chart = new Chart(ctx, {
    ...
    options:{
        scales:{
            x: {
                display: false
            }
        }
    }
});

仅删除 x 轴标签

var chart = new Chart(ctx, {
    ...
    options: {
        scales: {
            x: {
               ticks: {
                   display: false
              }
           }
        }
    }
});