【问题标题】:Create IF to change chart.js bar color创建 IF 以更改 chart.js 条形颜色
【发布时间】:2015-09-08 16:23:49
【问题描述】:

我是 JavaScript 新手,我正在使用 chart.js 创建一些数据可视化,我需要将整个条形的颜色更改为不同的值,我目前的代码如下,但我不能让它工作,这没有给我任何错误,所以我不知道要走了。

var dData1 = 90; ///////CARREGAR DADOS  DE FACTURAÇÃO (for developer)
var dData2 = 70; ///////CARREGAR DADOS  DE FACTURAÇÃO (for developer)

    var barChartData = {
            labels: ["MÊS", "ANO"],
            datasets: [{
                fillColor: "#f37c8a",
                strokeColor: "none",
                data: [dData1, dData2]
                }]
        }

    if (dData1 < 75)
        {
            barChartData.datasets[0].fillColor = "#f37c8a";
        }
         else if (dData1 > 76 && dData1 < 85) 
        {
            barChartData.datasets[0].fillColor = "#f3e97c";
        } 
        else if (dData1 > 86)
        {
            barChartData.datasets[0].fillColor = "#9ae27d";
        } else 
        {
            barChartData.datasets[0].fillColor = "#fff";
        };  

    if (dData2 < 75)
        {
            barChartData.datasets[0].fillColor = "#f37c8a";
        }
         else if (dData2 > 76 && dData1 < 85) 
        {
            barChartData.datasets[0].fillColor = "#f3e97c";
        } 
        else if (dData2 > 86)
        {
            barChartData.datasets[0].fillColor = "#9ae27d";
        } else 
        {
            barChartData.datasets[0].fillColor = "#fff";
        };

【问题讨论】:

    标签: javascript charts chart.js


    【解决方案1】:

    您需要为bars生成图表后设置颜色。您需要设置 fillColorhighlightFill_saved.fillColor(Chart.js 用于在工具提示悬停后恢复条形颜色)

    所以你需要类似的东西

    if (dData1 < 75)
    {
        barChart.datasets[0].bars[0].fillColor = barChart.datasets[0].bars[0].highlightFill = barChart.datasets[0].bars[0]._saved.fillColor = "#f37c8a";
    }
    else if (dData1 > 76 && dData1 < 85) 
    {
        barChart.datasets[0].bars[0].fillColor = barChart.datasets[0].bars[0].highlightFill = barChart.datasets[0].bars[0]._saved.fillColor = "#f3e97c";
    } 
    else if (dData1 > 86)
    {
        barChart.datasets[0].bars[0].fillColor = barChart.datasets[0].bars[0].highlightFill = barChart.datasets[0].bars[0]._saved.fillColor = "#9ae27d";
    } else 
    {
        barChart.datasets[0].bars[0].fillColor = barChart.datasets[0].bars[0].highlightFill = barChart.datasets[0].bars[0]._saved.fillColor = "#fff";
    };  
    

    对于第一个块,barChart 是您的图表对象。请注意,上面的代码假定单个系列包含 2 个元素。


    小提琴 - https://jsfiddle.net/2a86gqsa/

    请注意,您在第二个块中有 dData1 &lt; 85 - 我将其更改为 dData2 &lt; 85。看到这 2 个块的大部分代码很常见,您可能希望将其移动到函数中。

    【讨论】:

    • 您和我自己同时回答 :) +1 我需要更多的培训才能将其放入函数中,但我肯定会尝试。谢谢你指路。
    • 没问题!顺便说一句,在你的回答中,如果你将鼠标悬停在条上,颜色就会变成白色。另外,我没有注意到我的答案中缺少 update() ,因为图表正在动画并且会重绘。
    【解决方案2】:

    解决了,我把图书馆里面的东西叫错了。

        var dData1 = 90; ///////CARREGAR DADOS  DE FACTURAÇÃO
        var dData2 = 70; ///////CARREGAR DADOS  DE FACTURAÇÃO
    
        var barChartData = {
                labels: ["MÊS", "ANO"],
                datasets: 
    
                     [{
                    fillColor: "rgba(220,220,220,1)",
                    strokeColor: "rgba(220,220,220,0.0)",
                    highlightFill: "rgba(220,220,220,0.0)",
                    highlightStroke: "rgba(220,220,220,0)",
                    data: [dData1, dData2]
                    }]
            }
    
        var ctx = document.getElementById("myChart").getContext("2d");
        var myChart = new Chart(ctx).Bar(barChartData, {
          responsive: true,
          barValueSpacing: 10
        });
    
        if (barChartData.datasets[0].data=[dData1] < 75)
            { 
                console.log("vermelho");
                myChart.datasets[0].bars[0].fillColor = "rgba(243,124,138,1.00)";
                myChart.update();
            }
             else if (dData1 > 76 && dData1 < 85) 
            {
                console.log("amarelo");
                myChart.datasets[0].bars[0].fillColor = "rgba(243,233,7,1.00)";
                myChart.update();
            } 
            else if (dData1 > 86)
            {
                console.log("verde");
                myChart.datasets[0].bars[0].fillColor = "rgba(154,226,125,1.00)";
                myChart.update();
            } else 
            {
                console.log("branco");
                myChart.datasets[0].bars[0].fillColor = "rgba(255,255,255,1)";
                myChart.update();
            };  
    
    
    
        if (barChartData.datasets[0].data=[dData2] < 75)
            { 
                console.log("vermelho2");
                myChart.datasets[0].bars[1].fillColor = "rgba(243,124,138,1.00)";
                myChart.update();
            }
             else if (dData2 > 76 && dData2 < 85) 
            {
                console.log("amarelo2");
                myChart.datasets[0].bars[1].fillColor = "rgba(243,233,7,1.00)";
                myChart.update();
            } 
            else if (dData2 > 86)
            {
                console.log("verde2");
                myChart.datasets[0].bars[1].fillColor = "rgba(154,226,125,1.00)";
                myChart.update();
            } else 
            {
                console.log("branco2");
                myChart.datasets[0].bars[1].fillColor = "rgba(255,255,255,1)";
                myChart.update();
            };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-11-03
      • 2013-05-10
      • 1970-01-01
      • 1970-01-01
      • 2015-01-04
      • 2019-07-21
      • 2011-06-24
      相关资源
      最近更新 更多