Я строю диаграмму области, используя библиотеку D3, и я использовал их пример диаграммы площади , чтобы помочь мне построить его.Однако я не использую даты по оси X, вместо этого я использую строки, поэтому я попытался использовать их пример гистограмма , чтобы помочь мне обработать xAxis и его значения.
Из-за этого, однако, мои отметки по оси X «центрированы» между двумя точками значения, а не выровнены по левому краю (см. Изображение ниже).
![Sample Area Chart](https://i.stack.imgur.com/SGEr1.png)
Когда я пытался использовать пример диаграммы области для построения оси x, я не видел ни области, которая заполнялась, ни каких-либо точек данных вдоль оси x.
Как мне переместить метки, чтобы они были выровнены непосредственно на точке данных, а не центрированы между двумя разными точками данных?
Вот как выглядит мой код при построении графика ":
sampleAreaData = [
{"month": "Jun. 2018", "value": "2"},
{"month": "Jul. 2018", "value": "12"},
{"month": "Aug. 2018", "value": "33"},
{"month": "Sept. 2018", "value": "100"},
{"month": "Oct. 2018", "value": "150"},
{"month": "Nov. 2018", "value": "368"},
{"month": "Dec. 2018", "value": "404"},
{"month": "Jan. 2019", "value": "482"},
{"month": "Feb. 2019", "value": "559"},
]
initializeSampleAreaGraph() {
// Variables
const svg = d3.select(this.template.querySelector('svg.sampleAreaGraph'));
const width = this.svgSampleAreaWidth;
const height = this.svgSampleAreaHeight;
const margin = ({top: 20, right: 20, bottom: 30, left: 30});
const x = d3.scaleBand()
.domain(this.sampleAreaData.map(d => d.month))
.range([margin.left, width - margin.right])
const y = d3.scaleLinear()
.domain([0, d3.max(this.sampleAreaData, d => d.value)]).nice()
.range([height - margin.bottom, margin.top]);
const xAxis = g => g
.attr("transform", `translate(0,${height - margin.bottom})`)
.call(d3.axisBottom(x).ticks(width / 80).tickSizeOuter(0));
const yAxis = g => g
.attr("transform", `translate(${margin.left},0)`)
.call(d3.axisLeft(y))
.call(g => g.select(".domain").remove())
.call(g => g.select(".tick:last-of-type text").clone()
.attr("x", 3)
.attr("text-anchor", "start")
.attr("font-weight", "bold")
.text(this.sampleAreaData.month));
const area = d3.area()
.x(d => x(d.month))
.y0(y(0))
.y1(d => y(d.value));
// SVG Construction
svg.append("path")
.attr("fill", "steelblue")
.datum(this.sampleAreaData)
.attr("d", area)
svg.append("g")
.call(xAxis);
svg.append("g")
.call(yAxis);
return svg.node();
}