【问题标题】:Charts.js - Bubble chart with two word axisCharts.js - 带有两个字轴的气泡图
【发布时间】:2017-05-03 04:16:39
【问题描述】:

我需要创建一个气泡图样式的图表,它有两个轴,都是单词而不是文本。

在我的例子中我想要:

  • x 轴为颜色,例如红、蓝、黄
  • y 轴为汽车,例如小型车、中型车、大型车

据此,我想绘制每辆车订购了多少辆,例如如果订购了 2 辆红色小车,而订购了一辆蓝色大车,那么红色小车上会出现一个气泡,其大小是蓝色大车的两倍。

我对charts.js 做了一些工作,但我的示例都没有介绍如何使用文本而不是数字。

任何帮助都将不胜感激,我已经查看了此处的文档..enter link description here,但无法得到任何工作。

提前致谢。

【问题讨论】:

    标签: javascript charts bubble-chart chart.js


    【解决方案1】:

    我最近对数据集有相同的要求,并在比例选项中为每个轴使用了回调函数。我将标签的值列表填充到一个数组中,然后使用该点的索引执行查找以重命名刻度标签。

    var colours = ["Red", "Blue", "Green", "Yellow"];
    var carSizes = ["Small", "Medium", "Large"];
    
    // Small Red = 10
    // Small Green = 14
    // Medium Yellow = 23
    var dataPoints = [{x: 0, y: 0, r: 10}, {x: 2, y: 0, r: 14}, {x: 3, y: 1, r: 23}
    
    var myBubbleChart = new Chart(bubbleCtx, {
                type: 'bubble',
                data: dataPoints,
                options: {
                    title: {
                        display: true,
                        text: "Car Orders"
                    },
                    scales: {
                        yAxes: [{
                            ticks: {
                                stepSize: 1,
                                callback: function (value, index, values) {
                                    if (index < carSizes.length) {
                                        return carSizes[carSizes.length - (1 + index)]; //this is to reverse the ordering
                                    }
                                }
                            },
                            position: 'left'
                        }],
                        xAxes: [{
                            ticks: {
                                stepSize: 1,
                                callback: function (value, index, values) {
                                    if (index < colours.length) {
                                        return colours[index];
                                    }
                                }
                            },
                            position: 'bottom'
                        }]
                    }
                }
            });
    

    经过多次尝试和错误,我发现有必要将步长设置为 1,否则图表会因数据出现在网格线之外而出现偏差。

    如果您没有动态设置数据并且知道每个轴的最小值和最大值,则可以设置刻度的 min 和 max 属性并将轴类型指定为“类别”。

    yAxes: [{
        type: 'category',
        ticks: {
            stepSize: 1,
            min: 'Small',
            max: 'Large'
        },
        position: 'left'
    }]
    

    【讨论】:

    • 非常感谢您的回答,我几乎设法让它工作,但不完全......气泡没有出现在我的网格上。有什么想法吗?
    • 您是否有可以发布的 sn-p 代码,以便我查看是否有任何明显的东西阻止了它的工作?
    猜你喜欢
    • 1970-01-01
    • 2019-04-11
    • 1970-01-01
    • 2013-04-27
    • 1970-01-01
    • 1970-01-01
    • 2019-03-23
    • 2018-06-13
    • 1970-01-01
    相关资源
    最近更新 更多