从 ChartJs 水平条形图中删除填充

Jas*_*nle 4 javascript css jquery chart.js

嘿:)提前感谢您帮助我解决这个问题。

我在 ChartJs 中有一个水平图表,其中包含一些虚拟信息。我目前想将其与上面的统计数据对齐。在 ChartJs 中,图表在标签内呈现<canvas>。我想删除图表中的间距。我假设这是填充,但它不在画布上,而是在图表本身内。我已经阅读了文档并尝试了一些选择。

只是一些额外的信息,我自定义了图表,现在看起来像这样:

在此输入图像描述

  • 删除了图例
  • 翻转了标签
  • 更改了标签颜色
  • 删除了网格线

HTML: <canvas id="myChart" width="400" height="150"></canvas>

    var ctx = document.getElementById('myChart').getContext('2d');
    var myChart = new Chart(ctx, {
        type: 'horizontalBar',
        data: {
            labels: ['1', '2'],
            datasets: [{
                label: 'Money in',
                data: [5, 19],
                backgroundColor: [
                    'rgb(0,51,160)',
                    'rgb(26,121,191)'
                ],
                borderWidth: 0
            }]
        },
        options: {
            scales: {
                yAxes: [{
                    ticks: {
                        fontColor: 'white',
                        display: true,
                        position: top,
                        mirror: true,
                        beginAtZero: true,
                        fontSize: 17,
                        padding: -9,
                        z: 1
                    },
                    gridLines: {
                        display: false
                    }
                }],
                xAxes: [{
                    gridLines: {
                        display: false
                    },
                    ticks: {
                        beginAtZero: true,
                        display: false
                    }
                }]
            },
            legend: {
                display: false
            }
        }
    });
Run Code Online (Sandbox Code Playgroud)

umi*_*der 5

您可以layout使用负左填充来定义 ,如下所示:

options: {
    layout: {
      padding: {
        left: -10
      }
    },
    ...
Run Code Online (Sandbox Code Playgroud)

请看下面的代码片段,其中图表画布定义有边框,以强调与前面文本的对齐。

options: {
    layout: {
      padding: {
        left: -10
      }
    },
    ...
Run Code Online (Sandbox Code Playgroud)
var myChart = new Chart(document.getElementById('myChart'), {
  type: 'horizontalBar',
  data: {
    labels: ['1', '2'],
    datasets: [{
      label: 'Money in',
      data: [5, 19],
      backgroundColor: ['rgb(0,51,160)', 'rgb(26,121,191)'],
      borderWidth: 0
    }]
  },
  options: {
    layout: {
      padding: {
        left: -10
      }
    },
    scales: {
      yAxes: [{
        ticks: {
          fontColor: 'white',
          mirror: true,
          beginAtZero: true,
          fontSize: 17,
          padding: -9,
          z: 1
        },
        gridLines: {
          display: false
        }
      }],
      xAxes: [{
        gridLines: {
          display: false
        },
        ticks: {          
          beginAtZero: true,
          display: false
        }
      }]
    },
    legend: {
      display: false
    }
  }
});
Run Code Online (Sandbox Code Playgroud)
canvas{ 
  max-width: 300px;
  border: 1px solid #000;
}
Run Code Online (Sandbox Code Playgroud)