代码之家  ›  专栏  ›  技术社区  ›  Hari_pb

从chart.js中条形图的X轴删除0(零)

  •  0
  • Hari_pb  · 技术社区  · 7 年前

    我只想表现 0 对于x轴上的零值(一月到五月)。下面的代码用于绘图。感谢任何帮助/建议

    $scope.showChart = function (finalLabels, finalDatasets, finalTitle, plotType,dateRange) {
    
        var ctx = document.getElementById("chart").getContext('2d');
        var plotConfig = {
    
            type: plotType,
            data: {
                labels: finalLabels,
                datasets: finalDatasets
            },
            options: {
                responsive: true,
                maintainAspectRatio: false,
                layout: {
                    padding: {left: 0, right: 0, top: 10, bottom: 0}
                },
                plugins: {
                    labels: {
                        render: 'value',
                        fontSize: 10,
    
                    }
                },
                legend: {
                    display: false,
                    labels: {
                        fontSize: 10,
                        boxWidth: 35
                    }
                },
                scales: {
                    xAxes: [{
                        ticks: { autoSkip: false,fontSize:10
                        }
                    }],
                    yAxes: [{
                        scaleLabel: {
                            display: true,
                            labelString: 'Testing',
                            fontSize:10
                        },
                        ticks: {
                            beginAtZero: true,
                            fontSize:10
                        }
                    }]
                },
    
           /*     title: {
                    display: true,
                    text: [finalTitle.toUpperCase(),dateRange],
                    fontSize:10,
                    padding:0
                }*/
            }
        };
        if ($scope.chart) {
            $scope.chart.destroy();
        }
    
        $scope.chart = new Chart(ctx, plotConfig);
    };
    

    enter image description here

    3 回复  |  直到 7 年前
        1
  •  1
  •   Avanthika    7 年前

    如何格式化animation.onComplete上显示的文本?

    var ctx = document.getElementById("myChart");
    debugger;
    var data = {
      labels: ["2 May", "9 May", "16 May", "23 May", "30 May", "6 Jun", "13 Jun"],
      datasets: [{
        data: [0, 0, 56, 50, 88, 60, 45],
        backgroundColor: "#EEEEEE"
      }]
    }
    var myChart = new Chart(ctx, {
      type: 'bar',
      data: data,
      legend: {
        "display": false
      },
      options: {
        "hover": {
          "animationDuration": 0
        },
        "animation": {
          "duration": 1,
          "onComplete": function() {
            var chartInstance = this.chart,
              ctx = chartInstance.ctx;
    
            ctx.font = Chart.helpers.fontString(Chart.defaults.global.defaultFontSize, Chart.defaults.global.defaultFontStyle, Chart.defaults.global.defaultFontFamily);
            ctx.textAlign = 'center';
            ctx.textBaseline = 'bottom';
    
            this.data.datasets.forEach(function(dataset, i) {
              var meta = chartInstance.controller.getDatasetMeta(i);
              meta.data.forEach(function(bar, index) {
                var data = dataset.data[index];
                if (data) {
                ctx.fillText(data, bar._model.x, bar._model.y - 5);
                }
              });
            });
          }
        }
      }
    });
    <!doctype html>
    <html>
    <head>
      <title>example.com/test</title>
    </head>
    <body>
      <canvas id="myChart" width="100" height="100"></canvas>
      <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.5.0/Chart.bundle.js"></script>
    </body>
    </html>
        2
  •  1
  •   Andrew Lohr    7 年前

    如果您正在使用 DataLabels 插件,这是你可以做的 scriptable display option .

    在插件选项中,你可以使用一个函数来决定是否显示了一个标签。因此,在本例中,只需检查值是否大于0。

    var ctx = document.getElementById("myChart");
    debugger;
    var data = {
      labels: ["Jan 18", "Feb 18", "Mar18", "Apr 18", "May 18", "Jun 18", "Jul 18"],
      datasets: [{
        label: "# of Votes",
        data: [0, 0, 0, 0, 10, 12, 24]
      }]
    }
    var myChart = new Chart(ctx, {
      type: 'bar',
      data: data,
      legend: {
        "display": false
      },
      plugins: [ChartDataLabels],
      options: {
        plugins: {
          // Change options for ALL labels of THIS CHART
          datalabels: {
            color: "#36A2EB",
            anchor: "end",
            display: function(context) {
              var index = context.dataIndex;
              var value = context.dataset.data[index];
              return value > 0; // display labels with a value greater than 0
            }
          }
        }
      }
    });
    <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.3/Chart.bundle.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/chartjs-plugin-datalabels@0.5.0/dist/chartjs-plugin-datalabels.min.js"></script>
    <canvas id="myChart" width="100" height="100"></canvas>
        3
  •  0
  •   Hari_pb    7 年前

    我只是在插件的渲染中添加了一个条件,它工作得很好。

    plugins: {
               labels: {
                      render: function (args) {
                                if (args.value != 0)
                                    return args.value;
                            },
                      fontSize: 10
    
                        }
              },
    
    推荐文章