1
我试图绘制时间读数是从气象站获取的。每天应该有24个读数。因此,此处的目标是绘制x轴上的日期(MMM dd)和y轴上的时间(HH:mm)。在D3中绘制日期和时间
我从unix时间戳开始,我最迷失于如何从绘图时间中分离一天。我认为在解析中做到这一点,然后将这两种方法作图,但没有。
var formatTime = d3.time.format("%H:%M")
formatDate = d3.time.format("%b %e")
var margin = {top: 10, right: 30, bottom: 30, left: 30},
width = 960 - margin.left - margin.right,
height = 500 - margin.top - margin.bottom;
var svg = d3.select("body").append("svg")
.attr("width", width + margin.left + margin.right)
.attr("height", height + margin.top + margin.bottom)
.append("g")
.attr("transform", "translate(" + margin.left + "," + margin.top + ")");
d3.json("http://www.microveggies.com/data/get/all/all/range/2015-01-01/2016-02-17", function(error, data) {
if (error) throw error;
data.forEach(function(d) {
d.time = formatTime(new Date(d.timestamp * 1000));
d.date = formatDate(new Date(d.timestamp * 1000));
d.external_temp = +d.external_temp;
});
// Set the ranges
var x = d3.time.scale().range([0, width]);
var y = d3.time.scale().range([height, 0]);
// Scale the range of the data
x.domain(d3.extent(data, function(d) { return d.date; }));
y.domain(d3.extent(data, function(d) { return d.time; }));
var xAxis = d3.svg.axis()
.scale(x)
.orient('bottom')
.ticks(d3.time.days, 1)
.tickSize(0)
.tickPadding(8);
var yAxis = d3.svg.axis()
.scale(y)
.orient('left')
.ticks(d3.time.minutes, 30)
.tickSize(0)
.tickPadding(8);
// Add the scatterplot
svg.selectAll("dot")
.data(data)
.enter().append("circle")
.attr("r", 3.5)
.attr("cx", function(d) { return d.date; })
.attr("cy", function(d) { return d.time; });
// Add the X Axis
svg.append("g")
.attr("class", "x axis")
.attr("transform", "translate(0," + height + ")")
.call(xAxis);
// Add the Y Axis
svg.append("g")
.attr("class", "y axis")
.call(yAxis);
});
body {
font: 10px sans-serif;
}
.axis path,
.axis line {
fill: none;
stroke: #000;
shape-rendering: crispEdges;
}
.dot {
stroke: #000;
}
svg {
margin: 0 auto;
}
<!DOCTYPE html>
<meta charset="utf-8">
<script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script>
<body>
我不知道,就是这样。我认为这更多的是在时间戳上处理d3中的值。有很多关于拥有一个时间轴的教程,但我期待着做两个。 –