javascript - d3.js - 时间尺度上均匀分布的条形

标签 javascript charts axis d3.js

我正在 d3.js 中构建一个条形图,其中每个条形代表一个月内的结核病病例总数。数据本质上由一个日期(最初是 %Y-%m 格式的字符串,但使用 d3.time.format.parse 进行解析)和一个整数组成。我希望 Axis 标签相对灵活(仅显示年份边界、每月标签等),但我也希望条形间隔均匀。

当我使用日期刻度时,我可以获得灵活的 Axis 标签:

var xScaleDate = d3.time.scale()
    .domain(d3.extent(thisstat, function(d) { return d.date; }))
    .range([0, width - margin.left - margin.right]);

...但由于每个月的天数不同,条形分布不均匀(例如,二月和三月明显比其他月份更接近)。我可以使用线性比例得到均匀分布的条形:

var xScaleLinear = d3.scale.linear()
      .domain([0, thisstat.length])
      .range([0, width - margin.left - margin.right]);

...但我不知道如何拥有基于日期的 Axis 标签。我尝试同时使用两个刻度,并且仅从 xScaleDate 生成一个轴,只是为了看看会发生什么,但刻度自然不会完全正确对齐。

有没有一种简单的方法可以实现我所缺少的?

最佳答案

您可以组合序数尺度和时间尺度:

// Use this to draw x axis
var xScaleDate = d3.time.scale()
    .domain(d3.extent(thisstat, function(d) { return d.date; }))
    .range([0, width - margin.left - margin.right]);

// Add an ordinal scale
var ordinalXScale = d3.scale.ordinal()
    .domain(d3.map(thisstat, function(d) { return d.date; }))
    .rangeBands([0, width], 0.4, 0);

// Now you can use both of them to space columns evenly:
columnGroup.enter()
    .append("rect")
    .attr("class", "column")
    .attr("width", ordinalXScale.rangeBand())
    .attr("height", function (d) {
        return height - yScale(d.value);
    })
    .attr("x", function (d) {
        return xScaleDate(d.date);
    })
    .attr("y", function (d){
        return yScale(d.value);
    });

我不久前创建了一个示例来演示这种方法:http://codepen.io/coquin/pen/BNpQoO

关于javascript - d3.js - 时间尺度上均匀分布的条形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12186366/

相关文章:

java - 是否可以在不使用 WSDD 的情况下使用 Axis 部署 SOAP 服务器?

javascript - JavaScript 中的基本公共(public)/私有(private)函数结构

javascript - 在鼠标滚动时平滑滚动到 div

c# - 多个图表上的相同网格设置

php - 如何在PHPExcel中创建动态图表

c# - 图表控件数据系列

javascript - 如何在与链接函数隔离的范围内设置范围变量

javascript - 如何使用自定义 url 图片更改 blogger 中的所有 url 图片

java - 401 : Unauthorized Exception occurred with an apache axis client(java) to invoke a webservice(. 网络)使用 NTLM 身份验证技术

r - 无法调整ggplot中的次 Axis 比例