По оси X Я пытаюсь построить время на основе часов, если период времени составляет 2 дня, что составляет 48 тиков по оси X, в этом случае все метки перекрываются, и у меня возникают проблемыпоказывая их.Вопрос в том, как увеличить ширину контейнера графика при увеличении числа тиков.
<svg width="900" height="200" class="graph1" #lineChart id="line-chart"
(window:resize)="onResize()"></svg>
const svg = d3.select(element),
margin = { top: 20, right: 40, bottom: 20, left: 60 },
width = +svg.attr('width') - margin.left - margin.right,
height = +svg.attr('height') - margin.top - margin.bottom;
const x = d3.scaleTime().range([0, width - 20]);
const y = d3.scaleLinear().range([height, 0]);
if (this.aggregate === 'Hour' || this.aggregate === 'Day') {
x.domain(
d3.extent(yData, function(d) {
return d.valueTs;
})
);
}
y.domain([
d3.min(yData, function(d) {
return d.value;
}),
d3.max(yData, function(d) {
return d.value;
})
]);
if (this.aggregate === 'Hour') {
g.append('g')
.attr('class', 'axis axis--x')
.attr('transform', 'translate(0,' + height + ')')
.call(d3.axisBottom(x).ticks(d3.timeMinute.every(60)))
.append('text')
.attr('class', 'axis-title')
.attr(
'transform',
'translate(' + width / 2 + ' ,' + (height + margin.bottom + 20) +
')'
)
.style('text-anchor', 'end')
.attr('fill', '#5D6971')
.text('Time');
}
Это то, чего я сейчас могу достичь!
https://i.stack.imgur.com/f5XIg.png