带水平滚动的C3/D3条形图

use*_*862 4 scroll d3.js c3.js

我正在创建一个c3条形图,其中每个条形图表示在给定周内加入程序的人数.数据只是一组对象,其中包含[{week,#of people},{week,#of people}等.

理想情况下,我希望最新的6周显示在图表中,但我希望能够横向滚动以查看过去几周.

我看到了一个答案(D3.js滚动条形图),但在这种情况下,滚动时轴不会保持可见 - 我想这样做.

任何帮助将非常感激.

mg1*_*075 7

c3.js允许您制作"子图表",其实质上类似于您在Google财经上看到的股票图表.

我怀疑你最好让Sub Chart成为你滚动的机制,而不是尝试从css实现滚动条.

c3子图表的一个很好的功能是它如何允许为子图表设置'默认范围'.你可以做的是使用范围默认为有限的几周,然后用户可以根据需要操作子图表滑块/画笔.这是一个简单的实现/虚拟示例:

在此输入图像描述

axis.x.extent
http://c3js.org/reference.html

...设置子图和缩放的默认范围.

c3子图表
http://c3js.org/samples/options_subchart.html

jsfiddle中的工作示例
http://jsfiddle.net/y6tns4mt/1/


HTML

<div class="container">
    <div class="row">
        <div class="col-md-12">
            <p>My Chart Title</p>
            <div>
                <div id="my-chart"></div>
            </div>
        </div>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

用于c3图表的JavaScript

var chart = c3.generate({
    bindto: '#my-chart',
    data: {
        columns: [
            ['people', 30, 200, 100, 400, 150, 250, 40, 50, 70, 80, 90, 100, 17, 47, 51, 141]
        ],
        type: 'bar'
    },
    subchart: {
        show: true
    },
    axis: {
        x: {
            extent: [13, 16]
        }
    },
    tooltip: {
        format: {
            title: function (d) {
                return 'Week ' + d;
            }
        }
    }
});
Run Code Online (Sandbox Code Playgroud)