Tôi đang xây dựng một ô bar trong d3.js trong đó mỗi thanh đại diện cho tổng số trường hợp TB trong một tháng. Dữ liệu về cơ bản bao gồm một ngày (chuỗi ban đầu ở định dạng% Y-% m, nhưng được phân tích bằng cách sử dụng d3.time.format.parse) và một số nguyên. Tôi muốn các nhãn trục tương đối linh hoạt (chỉ hiển thị ranh giới năm, nhãn mỗi tháng, v.v.), nhưng tôi cũng muốn các thanh được đặt cách đều nhau.d3.js - các thanh cách đều nhau trên thang thời gian
tôi có thể nhận dán nhãn trục linh hoạt khi tôi sử dụng một quy mô ngày:
var xScaleDate = d3.time.scale()
.domain(d3.extent(thisstat, function(d) { return d.date; }))
.range([0, width - margin.left - margin.right]);
... nhưng các thanh không đều nhau do số ngày khác nhau trong mỗi tháng (ví dụ, tháng Hai và tháng Ba đáng chú ý gần nhau hơn so với các tháng khác). Tôi có thể nhận được các thanh đều nhau bằng cách sử dụng thang đo tuyến tính:
var xScaleLinear = d3.scale.linear()
.domain([0, thisstat.length])
.range([0, width - margin.left - margin.right]);
... nhưng tôi không thể tìm ra cách để có nhãn trục dựa trên ngày. Tôi đã cố gắng sử dụng cả hai quy mô đồng thời và chỉ tạo ra một trục từ xScaleDate
, chỉ để xem điều gì sẽ xảy ra, nhưng quy mô tự nhiên không sắp xếp khá đúng.
Có cách nào đơn giản để đạt được điều này mà tôi đang thiếu không?
nghe có vẻ như vấn đề là D3 là thiết xpos từ timestamp thực tế. Làm thế nào bout bạn tính toán 'data.monthsFromJan2000' hoặc tương tự và sử dụng nó như là dữ liệu đầu vào của bạn cho xpos? Bằng cách đó họ sẽ được khoảng cách đều nhau. Bạn cũng có thể lưu trữ 'data.year' và' data.month' cho mục đích ghi nhãn. – Plato