D3 годы по оси абсцисс

У меня возникли проблемы с построением оси абсцисс, которая включает годы и показывает количество арестов за каждый год.

Я сохранил свои данные в массивах.

Например: аресты var = [100,200,300,400] и годы var = [2000,2001,2002,2003].

Я хотел бы создать гистограмму, которая включает аресты по оси Y и соответствующие годы по оси X.

В приведенном ниже коде годы = [1988,1989..до .... 2018] и number_of ... = [1000,200 ...].

Оба являются массивами и имеют одинаковый размер.

var barWidth = 35;
var barOffset = 5;

var margin = 30;
var width = 1160;
var height = 200;

var data = number_of_arrest_per_year;

var x = d3.scaleOrdinal()
    .domain([new Date(1988),new Date(2018])
    .range([0,width]);

var y = d3.scaleLinear()
    .domain([0,d3.max(number_of_arrest_per_year)+500])
    .range([height,0]);

var chart = d3.select("#chart");

chart.attr("width",width + 2*margin)
    .attr("height",height + 2*margin)
    .append("g")
        .attr("transform","translate(" + 80 + "," + margin + ")")
    .selectAll("rect")
    .data(data)
    .enter().append("rect")
    .attr("width",20)
    .attr("height",function(d) { return height - y(d); })
    .attr("x",function(d,i) { return i *(barWidth + barOffset); })
    .attr("y",function(d) { return y(d); });

var xAxis = d3.axisBottom(x)
    .ticks(31)

var yAxis = d3.axisLeft(y)
    .ticks(5);

chart.append("g")
    .attr("transform", "translate(" + 80 + "," + (height+margin) + ")")
    .attr("class","axis")
    .call(xAxis);

chart.append("g")
    .attr("transform", "translate(" + 80 + "," + margin + ")")
    .attr("class","axis")
    .call(yAxis);

Большое спасибо.

Я обновил свой код:

1.

var x = d3.scaleBand()
    .domain(years)
    .range([0, width])
    .paddingInner(0.08)

2.

 .attr("width",x.bandwidth())

У этого кода есть несколько проблем: 1. Используйте не два массива для данных, а массив объектов. 2. Не указывайте жестко ширину полосы, используйте шкалу полосы. 3 не используйте new Date, просто узнайте объем данных. 4. сломайте свой выбор chart. 5. Не используйте указатель для позиционирования прямоугольников, просто используйте шкалу.

Gerardo Furtado 25.03.2018 03:37

@GerardoFurtado вы знаете, как отрегулировать расстояние между отметками?

mathquestion 25.03.2018 04:04

Просто используйте полосу шкалы. Имейте в виду, что с точки зрения dataviz использование гистограммы для временных рядов - не лучший вариант.

Gerardo Furtado 25.03.2018 04:06
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
3
459
0

Другие вопросы по теме