限制Chart.js折线图上的标签编号

mmm*_*mmm 80 javascript css charts canvas chart.js

我想从我得到的数据中显示我的图表上的所有点,但我不想显示它们的所有标签,因为那时图表不是很易读.我在文档中寻找它,但找不到任何限制它的参数.

我不想只拿三个标签,因为那时图表也只限于三个点.可能吗?

我现在有类似的东西:

在此输入图像描述

如果我可以留下每个第三个第四个标签,那就太好了.但我发现标签选项绝对没有.

小智 123

尝试添加options.scales.xAxes.ticks.maxTicksLimit选项:

xAxes: [{
    type: 'time',
    ticks: {
        autoSkip: true,
        maxTicksLimit: 20
    }
}]
Run Code Online (Sandbox Code Playgroud)

  • 上面的答案加上这个答案http://stackoverflow.com/a/372​​57056/558094,是炸弹. (4认同)
  • 这里不对劲.我在最后两个刻度之间有一个巨大的差距:https://jsfiddle.net/askhflajsf/xzk6sh1q/ (3认同)
  • 你从哪里得到这些信息?我正在为Chart.js阅读很多不知道 - 我无法在他们的文档中找到http://www.chartjs.org/docs/latest/,我错过了一些我可能找到所有那些小的地方是否记录了属性和可覆盖的回调? (2认同)
  • 如果您希望它在开始放置标签之前不旋转,您还可以添加 `maxRotation: 0`。 (2认同)

小智 17

为了具体,让我们说你的原始标签列表如下:

["0", "1", "2", "3", "4", "5", "6", "7", "8"]

如果您只想显示每个第4个标签,请过滤标签列表,以便填充每个第4个标签,并且所有其他标签都是空字符串(例如["0", "", "", "", "4", "", "", "", "8"]).

  • 请注意,传递"""也会删除图表上相应的工具提示! (35认同)
  • 除非我错了,如果你想要显示每个第10个标签,这可以很容易地用列表理解:`my_labels = [my_labels [i] if i%10 == 0 else""for i in range(len(my_list) )]`.数字10当然可以在文件开头声明为常量,以便更容易地参数化过程. (3认同)

小智 14

在 Chart.js 3.2.0 中:

options: {
    scales: {
        x: {
            ticks: {
                maxTicksLimit: 10
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)


Hay*_*ire 13

更新:

我使用NNick的Chart.js主分支机构更新了我的分支(截至2014年1月27日). https://github.com/hay-wire/Chart.js/tree/showXLabels

原始答案:

对于那些仍然面临这个问题的人,我将Chart.js分解了一段时间以解决同样的问题.您可以查看:https: //github.com/hay-wire/Chart.js/tree/skip-xlabels =>旧分支!检查showXLabels分支以获取最新信息.

如何使用:

适用于条形图和折线图.

用户现在可以传递一个{ showXLabels: 10 }仅显示10个标签(实际显示的标签数量可能略有不同,具体取决于x轴上存在的总标签数量,但仍然会接近10)

当有大量数据时帮助很多.早些时候,由于在狭窄空间中相互绘制的x轴标签,图形看起来过于严重.现在showXLabels,用户可以控制将标签数量减少到适合他可用空间的任何数量的标签.

请参阅附图以进行比较.

没有showXLabels选项: 在此输入图像描述

随着{ showXLabels: 10 }传递到选项: 在此输入图像描述

以下是对它的一些讨论:https: //github.com/nnnick/Chart.js/pull/521#issuecomment-60469304


Geo*_*e D 12

对于想要在Chart JS V2上实现此目的的任何人,以下将起作用:

 var options =  {  
         scales: {
            xAxes: [{
                afterTickToLabelConversion: function(data){


                    var xLabels = data.ticks;

                    xLabels.forEach(function (labels, i) {
                        if (i % 2 == 1){
                            xLabels[i] = '';
                        }
                    });
                } 
            }]   
        }
}
Run Code Online (Sandbox Code Playgroud)

然后像往常一样将options变量传递给:

myLineChart = new Chart(ctx, {
    type: 'line',
    data: data,
    options: options
});`
Run Code Online (Sandbox Code Playgroud)


bus*_*oni 12

对于 Chart.js 3.3.2,您可以使用@Nikita Ag 的方法并进行一些更改。你可以查看文档。放入.ticksxAxisscales例子:

...
options: {
    scales: {
        xAxis: {
            ticks: {
                maxTicksLimit: 10
            }
        }
    }
}
...
Run Code Online (Sandbox Code Playgroud)


Edg*_*var 7

用于轴旋转

用这个:

          scales: {
        xAxes: [
          {
            // aqui controlas la cantidad de elementos en el eje horizontal con autoSkip
            ticks: {
              autoSkip: true,
              maxRotation: 0,
              minRotation: 0
            }
          }
        ]
      }
Run Code Online (Sandbox Code Playgroud)