【问题标题】:Pass parameter to c3js tooltop after .generate() and before .load()在 .generate() 和 .load() 之前将参数传递给 c3js 工具提示
【发布时间】:2015-07-24 20:52:24
【问题描述】:

我正在尝试绘制彼此没有任何关系的指标,因此我没有绘制实际值,而是计算了一组在 0-1 之间缩放的替代值,例如百分比.

例如:[1, 2, 5] => [0.2, 0.4, 1]

所以现在我有 2 组数据 - 原始版本和缩放版本。我将缩放版本绘制在我的图表上就好了,但我希望工具提示向用户显示 original 值。明白我的意思了吗?

我查看了http://c3js.org/samples/tooltip_format.html,它表明您可以在最初生成 C3 对象时将工具提示设置为一个函数。但我想稍后在重新计算我的原始/缩放值并重新load() 图形后更改工具提示。

在最初设置 myGraph = C3.generate({...}) 后,我尝试显式更改 myGraph.tooltip.format.value = function (...) {...} 均未成功。

我有什么想法可以做到这一点,而不必每次都从头开始重新生成图表?

【问题讨论】:

    标签: javascript d3.js c3


    【解决方案1】:

    你需要覆盖internal.getTooltipContent

    var data = ['data1', 30000, 20000, 10000, 40000, 15000, 250000];
    
    // simple fake data
    var fakeData = data.map(function (d, i) {
        return i ? (d / 100) : d;
    })
    
    var chart = c3.generate({
        data: {
            columns: [
                fakeData,
                ['data2', 100, 200, 100, 40, 150, 250]
            ],
        }
    });
    
    
    // do code to take over mars and plant potatoes
    
    
    // save the original
    var originalGetTooltipContent = chart.internal.getTooltipContent;
    chart.internal.getTooltipContent = function (data, defaultTitleFormat, defaultValueFormat, color) {
        // we modified the first series, so let's change that alone back
        var originalValue = {
            id: data[0].id,
            index: data[0].index,
            name: data[0].name,
            // unfaked
            value: data[0].value * 100,
            x: data[0].x
        };
    
        var originalValues = data.map(function (d, i) {
            return i ? d : originalValue;
        })
    
        return originalGetTooltipContent.call(this, originalValues, defaultTitleFormat, defaultValueFormat, color)
    }
    

    我假设您已经对缩放的 y 轴标签进行了处理?


    小提琴 - http://jsfiddle.net/puf248en/

    【讨论】:

      【解决方案2】:

      谢谢土豆皮,

      我确实解决了这个问题,只需一次加载表单数据,然后以编程方式显示/隐藏某些指标。这样我就可以按预期使用所有 generate() 选项。

      确实尝试了您的解决方案,它似乎可以解决问题,直到我找到更简单的选项。谢谢!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-14
        相关资源
        最近更新 更多