javascript - 如何在 c3 图表中创建刻度线

标签 javascript charts c3

我必须在 C3 条形图中表示数据。问题是数据集通常包含一个或两个非常大的值和其他小得多的值(相比之下更小)。这会导致在几乎看不见的条形旁边出现非常高的条形。我知道使用像 this 这样的刻度符可以解决问题。但我还没有在 C3 中找到一个甚至提到它的例子。 有什么方法可以在 C3 图表中创建刻度线吗? 如果没有,是否有任何替代的开源 JS 库可以做到这一点?

最佳答案

您可以使用带拆分域的 d3 线性比例转换值和比例。

然后使用多条网格线绘制分割

HTML

<div id="chart"></div>

脚本

var myScale = d3.scale.linear().domain([0, 10, 90, 100]).range([0, 40, 60, 100]);

var chart = c3.generate({
    data: {
        columns: [
            ['A', 3, 2, 1, 4, 1.5, 92.5, 93, 91, 94].map(function (value, index) {
                return index ? myScale(value) : value;
            })],
        type: 'bar'
    },
    tooltip: {
        format: {
            value: function (value) {
                return parseFloat(myScale.invert(value).toFixed(5));
            }
        }
    },
    axis: {
        y: {
            min: 0,
            max: 100,
            padding: {
                top: 0,
                bottom: 0
            },
            tick: {
                format: function (d) {
                    if (d > myScale.range()[1] && d < myScale.range()[2]) return null
                    else return myScale.invert(d)
                }
            }
        }
    },
    grid: {
        y: {
            lines: [{ value: (myScale.range()[1] + myScale.range()[2]) / 2, class: 'breakFill' }, 
                    {value: (myScale.range()[1] + myScale.range()[2]) / 2 + 1, class: 'break' }, 
                    {value: (myScale.range()[1] + myScale.range()[2]) / 2 - 1, class: 'break' }]
        }
    }
});

您必须使用网格线而不是区域,因为区域层位于条形层下方(网格层位于条形层上方)

CSS

这由一条(粗)填充线和 2 条边框线组成

.breakFill > line {
    stroke-width: 4px;
    stroke: white;
    stroke-opacity: 1;
}
.break > line {
    stroke-width: 1px;
    stroke: grey;
}

您还可以使用波浪形图案更好地设计它的样式,或者在其上放置一个具有波浪形背景的 HTML 元素。

fiddle - http://jsfiddle.net/tdfpj3oc/

关于javascript - 如何在 c3 图表中创建刻度线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30890428/

相关文章:

javascript - 链接文件夹中的 HTML 文件?

javascript - 使用 Canvas 创建极地面积图

javascript - C3 js折线图获取日期错误

javascript - 在数据事件中访问 c​​3js 中的数据值

javascript - c3.js - c3 图表,有一个工具提示,里面有 c3 图表

javascript - 在 Javascript 中将复杂的字符串表达式解析为 bool 值

javascript - Tab.js 无法读取未定义的属性 'getSelectorFromElement'

javascript - HTML 视频静音按钮

charts - 定期修改 JavaFX StackedBarChart CategoryAxis

plot - Bokeh 图 : Custom HoverTool variables for Bar Charts