【问题标题】:Chart.js: Reverse bar chart with regular bars (Bottom to top instead of top to bottom)Chart.js:带有常规条形的反向条形图(从下到上而不是从上到下)
【发布时间】:2018-03-22 12:25:31
【问题描述】:

我正在尝试为我的用户的成绩创建一个条形图。 1级很好,6级很差。我希望 1 年级的标准杆很高,而 6 年级的标准杆很小。如果我使用reverse option,情况并非如此。基本上,我希望 y 轴反转,条形图从底部而不是顶部上升。

Fiddle

var canvas = document.getElementById('myChart');
var data = {
    labels: ["January", "February", "March", "April", "May", "June", "July"],
    datasets: [
        {
            label: "Grade",
            backgroundColor: "rgba(255,99,132,0.2)",
            borderColor: "rgba(255,99,132,1)",
            borderWidth: 2,
            hoverBackgroundColor: "rgba(255,99,132,0.4)",
            hoverBorderColor: "rgba(255,99,132,1)",
            data: [1, 4, 6, 2, 3, 5, 6],
        }
    ]
};
var option = {
    scales: {
    yAxes:[{
            stacked:true,
        gridLines: {
            display:true,
          color:"rgba(255,99,132,0.2)"
        },
        ticks: {
           suggestedMin: 1,
           suggestedMax: 6,
           reverse: true
        }
    }],
    xAxes:[{
            gridLines: {
            display:false
        }
    }]
  }
};

var myBarChart = Chart.Bar(canvas,{
    data:data,
  options:option
});

我想要的结果的粗略草图:

一种选择是将colour the chart area 设置为我想要的颜色,然后将条形颜色更改为透明并将其宽度更改为 100%。这至少会使条形图稍微正确。


未来人们的注意事项:除了@halliballi 接受的答案之外,我还添加了以下代码来覆盖选项部分中的工具提示:

tooltips: {
        mode: 'index',
        intersect: false,
        callbacks: {
            title: function (tooltipItem, data)
            {
                return data['labels'][tooltipItem[0]['index']];
            },
            label: function (tooltipItem, data)
            {
                console.log(tooltipItem);
                return "Note: " +
                    (
                        7 - data['datasets'][0]['data'][tooltipItem['index']]
                    );
            }
        }
  },

这是我完成的图表:

【问题讨论】:

    标签: javascript chart.js chart.js2


    【解决方案1】:

    我认为你可以用 6 减去你想要显示的值来“反转”你的值,然后覆盖 y 轴上的标签

    options: {
            scales: {
                yAxes: [{
                    ticks: {
                        callback: function(value, index, values) {
                            return (6 - value);
                        }
                    }
                }]
            }
    

    【讨论】:

    • 哇,这真是个好主意!我还必须覆盖工具提示,但总而言之,它似乎比我最初的想法更干净。
    • 感谢您的帮助,我已经用我的附加代码编辑了我的问题并添加了屏幕截图!
    猜你喜欢
    • 2020-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-25
    • 1970-01-01
    • 1970-01-01
    • 2014-07-04
    相关资源
    最近更新 更多