Chart.js图表:仅显示x轴上第n个刻度线

5

我已经搜索了一段时间,但由于先前版本的库的大量删除文档和hacky答案,我离解决方案越来越远。

我正在使用ChartJS v2创建一个图表,其中x轴上有季度-月份名称,并且我已经设置了标签,使得仅显示每4个标签(即每年一个)。结果如下:

enter image description here

但是,我想让刻度线也只在x轴的每第四个条目处出现,与标签相同。这是可能的吗?

我的当前脚本标记如下:

<script>
    var ctx = document.getElementById("myChart").getContext('2d');
    ctx.canvas.width = 600;
    ctx.canvas.height = 420;
    var myChart = new Chart(ctx, {
        type: 'line',
        data: {

          < snipped for brevity >

        },
        options: {
            tooltips: {
              mode: 'index',
              intersect: false
            },
            scales: {
                xAxes: [{
                    ticks: {
                        userCallback: function(item, index) {
                            if (index%4) return "";
                            return item;
                        },
                        autoSkip: false
                    },
                    display: true
                }],
                yAxes: [{
                    ticks: {
                        beginAtZero:true
                    }
                }]
            }
        }
    });
    </script>

这是否可以实现?提前感谢。

1个回答

14

使用以下代码替换您的 tick's userCallback 函数...

userCallback: function(item, index) {
   if (!(index % 4)) return item;
}

基本上,您不需要为希望隐藏的标签返回任何空字符串。如果您没有为标签(您不想要的标签)返回任何内容,则不会为该标签绘制任何刻度线(以及网格线)。

ᴅᴇᴍᴏ

var ctx = document.getElementById("myChart").getContext('2d');
var myChart = new Chart(ctx, {
   type: 'line',
   data: {
      labels: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sept'],
      datasets: [{
         label: 'Standard Rating',
         data: [1, 2, 3, 4, 5, 6, 7, 8, 9],
         backgroundColor: 'rgba(209, 230, 245, 0.5)',
         borderColor: 'rgba(56, 163, 236, 1)',
         borderWidth: 1
      }]
   },
   options: {
      responsive: false,
      tooltips: {
         mode: 'label',
         intersect: false
      },
      scales: {
         xAxes: [{
            ticks: {
               userCallback: function(item, index) {
                  if (!(index % 4)) return item;
               },
               autoSkip: false
            }
         }],
         yAxes: [{
            ticks: {
               beginAtZero: true
            }
         }]
      }
   }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.5.0/Chart.min.js"></script>
<canvas id="myChart" width="350" height="200"></canvas>


这个功能运行得很好,但是有没有一种方法可以使轴的文本不倾斜而是直的? - Sanyam koul
1
工具提示显示 x 值未定义,有解决方法吗? - Sanyam koul

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接