【问题标题】:How to make rectangle in chart.js如何在chart.js中制作矩形
【发布时间】:2017-11-04 07:10:47
【问题描述】:

我正在尝试在 chart.js 中放置矩形以形成上下范围/级别,就像在图像中一样

虽然我可以通过在这个例子中画两条线来做到这一点

var ctx = document.querySelector("#myChart").getContext('2d');
Chart.pluginService.register({
    afterDraw: function(chart) {
        if (typeof chart.config.options.lineAt != 'undefined') {
        	var lineAt = chart.config.options.lineAt;
            var ctxPlugin = chart.chart.ctx;
            
            var xAxe = chart.scales[chart.config.options.scales.xAxes[0].id];
            
            ctxPlugin.strokeStyle = "green";
        	ctxPlugin.beginPath();
            lineAt = 102;
            ctxPlugin.moveTo(xAxe.left, lineAt);
            ctxPlugin.lineTo(xAxe.right, lineAt);
            ctxPlugin.moveTo(xAxe.left, lineAt-33);
            ctxPlugin.lineTo(xAxe.right, lineAt-33);
            ctxPlugin.stroke();
        }
    }
});
var myChart = new Chart(ctx, {
          type: 'bar',
          data: {
              labels: ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Nov","Dec"],
              datasets: [{
                  label: 'Findings',
                  data: [0,45],
                  backgroundColor: 'rgba(54, 162, 235, 0.2)',
                  borderColor: 'rgba(54, 162, 235, 1)',
                  borderWidth: 1
              }]
          },
          options: {
          	lineAt: 15,
            scales: {
                yAxes: [{
                  display: true,
                  ticks: {
                      beginAtZero: true,
                      steps: 20,
                      stepValue: 20,
                      max: 60,
                      min: 0
                  }
              }]
            }
          }
      });
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.2.1/Chart.min.js"></script>
<canvas id="myChart" height="100"></canvas>

请在这里分享您的建议:http://jsfiddle.net/nikleshraut/ad2fsefe/

【问题讨论】:

    标签: javascript jquery charts chart.js bar-chart


    【解决方案1】:

    已经有一个名为 chartjs-plugin-annotation 的 Chart.js 插件,通过它您可以轻松实现。

    使用该插件,您需要创建一个框注释(矩形),例如:

    options: { //your chart options
       annotation: {
          annotations: [{
             type: 'box',
             drawTime: 'beforeDatasetsDraw',
             yScaleID: 'y-axis-0',
             yMin: 40,
             yMax: 50,
             backgroundColor: 'rgba(0, 255, 0, 0.1)'
          }]
       }
    }
    

    注意:这是绘制该矩形所需的最少选项, 您可以找到更多选项here

    这是working fiddle

    【讨论】:

    • 哇!!这是一个很棒的插件
    • 我达到了线宽:jsfiddle.net/nikleshraut/ad2fsefe/1 没有插件
    • 是的,你应该使用那个插件,而不是浪费时间编写你自己的插件。但是,你可以使用fillRect而不是moveTo/lineTo
    • 很遗憾,这个插件已经过时了,并且不适用于时间尺度。
    猜你喜欢
    • 2014-07-17
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-02
    • 1970-01-01
    相关资源
    最近更新 更多