【问题标题】:How to create a multi-series stacked bar chart in dc.js如何在 dc.js 中创建多系列堆叠条形图
【发布时间】:2014-01-05 14:42:40
【问题描述】:

我的需求和this question的很相似,里面的一系列记录如下:

var data = [
 // time, text, temperature, count
 ['1379952000', 'field_1', 91, 56],
 ['1379952000', 'field_2', 50, 20],
 ['1379952000', 'field_3', 88, 24],
 ['1379952000', 'field_4', 50, 37],
 ['1379953200', 'field_1', 97, 58],
 ['1379953200', 'field_2', 84, 86],
 ['1379953200', 'field_3', 85, 62],
 ['1379953200', 'field_4', 88, 73]
 // etc.
];

需要绘制为一组时间序列线,每个序列对应text字段的每个唯一值(即field_1field_2等)。该问题的答案here 给出了一个可行的实现。但是,我需要将系列绘制为 条形

我想我应该检查 dc.js 的 seriesChart 类是如何实现的,并尝试将其派生为使用 barChart 而不是 lineChart 作为其内部绘图功能。你可以找到the result here。 (查看文件seriesbarchart.js并与the source比较)

我的测试存在的一个缺陷是条形的单像素宽度。我是这个 Javascript/HTML/CSS 网络世界的新手,对于 D3 和 dc.js 更是如此。有知识的人可以帮我解决这个问题吗?提前致谢。

【问题讨论】:

    标签: javascript bar-chart dc.js stacked-chart


    【解决方案1】:

    您可以将 xUnits 定义为时间间隔,例如分钟或小时:

    time_chart
    .xUnits(d3.time.minutes)
    

    但是,对于您的数据,您可能需要 15 分钟的时间间隔。这需要自定义时间间隔。

    这里有一个问题可以解决: How to define custom time interval in d3.js

    【讨论】:

    • 这很有效,在必须向源 d3.js 添加一行以公开 d3_time_interval 类之后,我可以以与 @ 相同的方式定义自定义时间单位987654325@。你会用一种不那么“hacky”的方式来实现这一点吗?
    • 嗨 Luis,我想你可以自己重新定义这个类。您能否为该主题的未来观众分享您的解决方案?
    猜你喜欢
    • 2017-01-23
    • 2020-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多