ティック値をY軸に均等に配置するにはどうすればよいですか?あなたが見ることができるように、グラフ上のすべてがD3 - ティック値がドメインと範囲で均等に配置されない
var y = d3.scaleLinear()
.domain([0,4])
.range([height, 0]);
var graph = setGraphSize(attrs.graphSize);
var margin = {top: 20, right: 30, bottom: 30, left: 30},
width = graph.width - margin.left - margin.right,
height = graph.height - margin.top - margin.bottom;
var parseDate = d3.timeParse('%H:%M');
// converts strings to date times
scope.curveData.meta.forEach(function(d) {
d.timeStamp = parseDate(d.timeStamp);
d.glucoseLevel = +d.glucoseLevel;
});
var x = d3.scaleTime()
.range([0, width]);
var y = d3.scaleLinear()
.domain([0,4])
.range([height, 0]);
var timeStampList = scope.curveData.meta.map(function (d) { return d.timeStamp; });
// creates X axis
var xAxis = d3.axisBottom(x)
.tickValues(timeStampList)
.tickFormat(d3.timeFormat("%I:%M %p"))
var glucoseLevelList = getTicks('glucoseLevel', scope.curveData);
var yAxis = d3.axisLeft(y).tickValues(glucoseLevelList);
var curve = d3.line()
.x(function(d) { return x(d.timeStamp); })
.y(function(d) { return y(d.glucoseLevel); })
.curve(d3.curveCatmullRom.alpha(0.5));
var divEl = element[0].querySelector('div');
divEl.classList.add(attrs.graphSize);
var svg = d3.select(divEl).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 + ')');
x.domain(d3.extent(scope.curveData.meta, function(d) { return d.timeStamp; }));
y.domain(d3.extent(scope.curveData.meta, function(d) { return d.glucoseLevel; }));
// Add the scatterplot
svg.selectAll("dot")
.data(scope.curveData.meta)
.enter().append("circle")
.attr("r", 3.5)
.attr("cx", function(d) { return x(d.timeStamp); })
.attr("cy", function(d) { return y(d.glucoseLevel); });
// 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)
// Add the value curve path.
svg.append('path')
.attr('class', 'curve')
.attr('d', curve(scope.curveData.meta));
var graphTitle = graphTitleGenerator(scope.curveData);
svg.append("text")
.attr("x", (width/2))
.attr("y", 0 - (margin.top/4))
.attr("text-anchor", "middle")
.style("font-size", graph.font)
.style("font-weight", "500")
.style("font-family",
"'Roboto Mono',RobotoDraft,Helvetica,Arial,sans-serif")
.text(graphTitle);
あなたはglucoseLevelList' 'で正しい、そこだけ3つの値です。整数値に関係なくそれらを均等に配置できますか?私は 'y.domain'をまだ試していません。また、私の目標は、グラフがあまり混雑していないようにプロットされているダニを持つことだけです。それが私の状況にとって重要かどうかはわかりません。 – dman
あなたはここに矛盾があります:あなたは* "ただプロットされたティックを持っています" *しかし、あなたはそれらを "均等に間隔を空けてください" *したがっています。これは、データポイント自体が均等に配置されている場合にのみ可能です。 –