使用chartjs删除y轴上的多余线条 [英] Remove excess lines on y axis using chartjs

查看:68
本文介绍了使用chartjs删除y轴上的多余线条的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想知道如何删除折线图上多余的折线.我试图将 drawborder 设置为false,但是当然它只是删除了到轴的所有线.我只是想摆脱指向y轴标签的多余垂直线,如下面带有红色标记的图像.

I wonder how to remove the excess lines on the line chart. I tried to set drawborder to false but of course it just remove the all lines to the axis. I just wanted get rid of the unwanted vertical lines that points to the y axis labels like the image below with red mark.

模板:

<d-chartrecord 
     :chart-data="datacollection" 
     v-bind:options="options"
     :height="200"
></d-chartrecord>

脚本:

export default {
    data () {
        return {
            datacollection: {},
            options: {
                responsive: true,
                legend: {
                  display: false,
                },
                scales: {
                    xAxes: [{
                        gridLines: {
                            display: true,
                            color: '#D7D7D7'
                        },
                        ticks: {
                            fontSize: 8,
                            beginAtZero: true
                        },
                        gridLines: {
                            display: true,
                        }
                    }],
                    yAxes: [{
                        display: true,
                        ticks: {
                            fontSize: 8,
                            beginAtZero: true,
                            stepSize: 50,
                            maxTicksLimit: 3
                        }
                    }],
                }
            },

        }
    },
    mounted () {
        this.putData()
    },
    methods: {
        putData () {
            this.datacollection = {
                labels: ['JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC'],
                datasets: [{
                    lineTension: 0,
                    radius: 4,
                    borderWidth: 1,
                    borderColor: '#F2A727',
                    pointBackgroundColor:[ '#fff', '#fff', '#fff', '#fff', '#fff', '#F2A727'],
                    backgroundColor: 'transparent',
                    data: [this.getRandomInt(), this.getRandomInt(), this.getRandomInt(), this.getRandomInt(), this.getRandomInt(), this.getRandomInt()]
                }]
            }
        },
        getRandomInt  () {
            return Math.floor(Math.random() * (95)) + 5
        }
    }
}

推荐答案

不幸的是,ChartJS目前没有任何本机功能.您宁愿创建一个图表插件来实现这一目标.

Unfortunately, there isn't any native functionality for this in ChartJS at the moment. You would rather need to create a chart plugin to achieve that.

ᴘʟᴜɢɪɴ(ᴅʀᴀᴡx-ᴀxɪꜱɢʀɪᴅ-ʟɪɴᴇꜱ)

ᴘʟᴜɢɪɴ (ᴅʀᴀᴡ x-ᴀxɪꜱ ɢʀɪᴅ-ʟɪɴᴇꜱ) ­

Chart.plugins.register({
   beforeDraw: function(chart) {
      var ctx = chart.chart.ctx,
          x_axis = chart.scales['x-axis-0'],
          topY = chart.scales['y-axis-0'].top,
          bottomY = chart.scales['y-axis-0'].bottom;
      x_axis.options.gridLines.display = false;
      x_axis.ticks.forEach(function(label, index) {
         if (index === 0) return;
         var x = x_axis.getPixelForValue(label);
         ctx.save();
         ctx.beginPath();
         ctx.strokeStyle = x_axis.options.gridLines.color;
         ctx.moveTo(x, topY);
         ctx.lineTo(x, bottomY);
         ctx.stroke();
         ctx.restore();
      });
   }
});

*将其放在脚本的顶部

ᴡᴏʀᴋɪɴɢᴇxᴀᴍᴘʟᴇstrong

Chart.plugins.register({
   beforeDraw: function(chart) {
      var ctx = chart.chart.ctx,
          x_axis = chart.scales['x-axis-0'],
          topY = chart.scales['y-axis-0'].top,
          bottomY = chart.scales['y-axis-0'].bottom;
      x_axis.options.gridLines.display = false; // hide original grid-lines
      // loop through x-axis ticks
      x_axis.ticks.forEach(function(label, index) {
         if (index === 0) return;
         var x = x_axis.getPixelForValue(label);
         ctx.save();
         ctx.beginPath();
         ctx.strokeStyle = x_axis.options.gridLines.color;
         ctx.moveTo(x, topY);
         ctx.lineTo(x, bottomY);
         ctx.stroke();
         ctx.restore();
      });
   }
});

var chart = new Chart(ctx, {
   type: 'line',
   data: {
      labels: ['Jan', 'Feb', 'Mar', 'Apr', 'May'],
      datasets: [{
         label: 'LINE',
         data: [3, 1, 4, 2, 5],
         backgroundColor: 'rgba(0, 119, 290, 0.2)',
         borderColor: 'rgba(0, 119, 290, 0.6)',
         fill: false,
         tension: 0
      }]
   },
   options: {
      scales: {
         yAxes: [{
            ticks: {
               beginAtZero: true,
               stepSize: 1
            },
            gridLines: {
               display: false
            }
         }]
      }
   }
});

<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.6.0/Chart.min.js"></script>
<canvas id="ctx"></canvas>

这篇关于使用chartjs删除y轴上的多余线条的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆