javascript - Chart.js Bar Chart with a switch/radio button to group data/故障排除栏颜色

标签 javascript charts chart.js bar-chart

我的主要目标是创建一个开关/单选按钮来对数据进行分组(而不是在顶部设置过滤器)。请查看屏幕截图以供引用:

enter image description here

enter image description here

是否可以对数据进行分组,将过滤按钮变成一个开关?

如果不可能,我的 B 计划是一次显示所有数据,并在顶部保留过滤器。 这是代码和 jsfiddle 链接:

<!-- Charts library -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.2/Chart.js"></script>

<div class="chart-wrapper">
  <canvas id="myChart" width="400" height="200"></canvas>
  <script>
    var ctx = document.getElementById("myChart").getContext('2d');
    var myChart = new Chart(ctx, {
        type: 'bar',
      data: {
        labels: ["option 1", "option 2"],

            datasets: [
        {
        label: 'yes',
        data: [714,233],
        backgroundColor: '#004831',
        },
        {
        label: 'no',
        data: [800, 451],
        backgroundColor: '#76B900'
        }
            ]},

        options: {
                scales: {
                    yAxes: [{
                        ticks: {
                            beginAtZero:true
            }
            }]
        }
        }
        });
    </script>
</div>

https://jsfiddle.net/fariadesign/kL810rnq/9/

在此先感谢您的帮助。

谢谢!

最佳答案

它的工作原理是这样的......

var chart = null;

var chartData = {
  labels: ['Question 1', 'Question 2'],
  datasets: [
    {label: 'yes', backgroundColor: '#004831', data: [714, 233]},
    {label: 'no', backgroundColor: '#76B900', data: [800, 451]}
  ]
};

var chartOptions = {
  tooltips: {mode: 'index', intersect: true},
  legend: {display: false},
  responsive: true,
  scales: {
    xAxes: [{
      ticks: {beginAtZero: true},
      stacked: true
    }],
    yAxes: [{
      ticks: {beginAtZero: true},
      stacked: false
    }]
  }
};

$(function() {

  chart = new Chart($('#chart'), {
    type: 'bar',
    data: chartData,
    options: chartOptions
  });
  
  $("input#toggle[type='checkbox']").click(function (event) {
    var isStacked = false;
    if ($(this).is(':checked')) {
      isStacked = true;
    } else {
      isStacked = false;
    }
    
    chart.options.scales = {
      xAxes: [{ stacked: isStacked }],
      yAxes: [{ stacked: isStacked }]
    };
    chart.update();
  });
  
});
canvas {
   -moz-user-select: none;
   -webkit-user-select: none;
   -ms-user-select: none;
}
.toggle {
    position: relative;
    margin: 20px auto;
    width: 55px;
    -webkit-user-select:none;
    -moz-user-select:none;
    -ms-user-select: none;
}
.toggle-checkbox {
    display: none;
}
.toggle-label {
    display: block; overflow: hidden; cursor: pointer;
    height: 20px; padding: 0; line-height: 20px;
    border: 0px solid #FFFFFF; border-radius: 30px;
    background-color: #9E9E9E;
}
.toggle-label:before {
    content: "";
    display: block; width: 30px; margin: -5px;
    background: #FFFFFF;
    position: absolute; top: 0; bottom: 0;
    right: 31px;
    border-radius: 30px;
    box-shadow: 0 6px 12px 0px #757575;
}
.toggle-checkbox:checked + .onoffswitch-label {
    background-color: #42A5F5;
}
.toggle-checkbox:checked + .toggle-label, .toggle-checkbox:checked + .toggle-label:before {
   border-color: #42A5F5;
}
.toggle-checkbox:checked + .toggle-label .toggle-inner {
    margin-left: 0;
}
.toggle-checkbox:checked + .toggle-label:before {
    right: 0px; 
    background-color: #2196F3; 
    box-shadow: 3px 6px 18px 0px rgba(0, 0, 0, 0.2);
}
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.2/Chart.min.js"></script>
<div class="toggle">
    <input id="toggle" type="checkbox" class="toggle-checkbox"/>
    <label for="toggle" class="toggle-label">&nbsp;</label>
</div>
<canvas id="chart" width="100%" height="100%"></canvas>

这是 docs .

关于javascript - Chart.js Bar Chart with a switch/radio button to group data/故障排除栏颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51795323/

相关文章:

javascript - 如何从 Cordova 发出多部分请求

javascript - 自定义 React Native Chart Kit 的颜色

javascript - 匹配来自 rs 值 mysql php 的颜色图表

javascript - Chart.js,虚线,全宽图表

javascript - Chartjs - 将附加数据插入图表工具提示

javascript - 图表 js 分组条的总和

javascript - knockout : Asynchronous call in model binding

javascript - 在 Safari 中,下拉选项位于顶部

javascript - 在 jQuery 的 slideUp 之后保持相同的位置

mysql - 在表中存储状态标志值的最佳方式(char 或 int)