Я рекомендую вам прочитать эту статью. Это очень хорошо объясняет, как использовать гистограммы. https://blog.risingstack.com/d3-js-tutorial-bar-charts-with-javascript/
Я использовал ваш код и сделал простой пример. https://codepen.io/mp-9007/pen/jJpEWY
Основные проблемы связаны с возвращаемыми значениями x, y и height; Вы должны указать координаты x и y в области графика. Рисование гистограммы аналогично рисованию на декартовой плоскости, вы должны указать координаты, где начать полосу, ширину полосы и ее высоту. Источник плана находится в левом верхнем углу изображения.
.attr("x", function(d, i) { //d = input data, i = index of it
return Xscale(d); //The scaling function returns the coordinate for a given domain value.
})
.attr("y", function(d, i) { //d = input data, i = index of it
return Yscale(d); //The scaling function returns the coordinate for a given domain value.
})
.attr("width", Xscale.bandwidth())
.attr("height", function(d, i) { //d = input data, i = index of it
return height - Yscale(d); //The computed y coordinate has to be subtracted from the height of the chart to get the correct representation of the value as a column.
});
Кроме того, домен для оси х можно рассматривать как категории. В вашем коде вы указали только две категории: 0 и data.length. Предоставление массива решило эту проблему.
var Xscale = d3.scaleBand().domain(data)
Я предполагаю, что у Вас уже есть некоторые пользовательские истории и требования. Мне нравится создавать элементарную модель предметной области (в основном диаграмма классов), возможно, не имея ВСЕХ полей, которые все будет содержать, но достаточно получить общее представление о том, как все соединено, иерархии наследования, и каково все.
Что касается кодирования, мне нравится запускаться с единственного ресурса и получать некоторую основную функциональность, созданную вокруг этого. Я обычно не сцепляю его до DB в этой точке, я применяю довольно простой ДАО, который наполняет вещи в набор объектов области.
Затем, я добавляю горстку незначительных связанных ресурсов и начинаю создавать различные ссылки между ними. На данном этапе я имею несколько объектов области на месте, но, возможно, не создал все поля и материал, в котором они нуждаются. Всего несколько важных полей, которых является достаточно, чтобы дифференцироваться между экземплярами объектов и связать горстку их вместе.
На данном этапе я пытаюсь изложить в деталях объекты области, которые я имею с полями и поведениями, и добавляю необходимые биты к представлению (представлениям) для создания тех функций применимыми. Затем я получаю своего рода реальную применимую работу персистентности, настраиваю проверку и делаю представления симпатичными.
Совершенствуйте то, что Вы имеете, затем выполняете итерации для покрытия остатка от модели.
"пользовательские истории"> прототип> дизайн> кодирующий> iteration1> iteration2>...> выпуск
Вот хороший пример повторений:
Прокрутите вниз на "ASP.NET Пример приложения менеджера по Контакту MVC", он похож:
Запустите с пользователя, если Вы хотите приложение, которое людям нравится использовать. Затем работайте назад к проектированию баз данных, которое работает с пользовательскими историями.
Если Вы хотите приложение, которое работает как многие, мы знакомы с, где пользователи должны просто там выполнить сопровождение базы данных, запустите с базы данных. Вы, вероятно, закончите быстрее, но Ваши пользователи не будут так же довольны результатом.
Лично, я всегда запускаю mindmapping все. Затем я создаю структуру своих моделей, затем я вставил логику для добавления новых данных (ли это быть панелью административного контроля или материалом фронтэнда)
Затем я пишу тесты
Затем я запускаю демонстрирующийся логика, редактирование, и т.д. и т.д., и любая дополнительная необходимая функциональность
Если Вы знаете то, что Вы хотите Вас, может приняться за решение проблемы от всех углов, однако, хорошие принципы разработки диктуют, что у Вас есть своего рода спецификация сначала, которая обрисовывает в общих чертах функции, которые Вы хотите. Мало того, что это помогает Вам установить свои этапы функции, но это - удивительно полезное упражнение в том, чтобы распланировать Ваше приложение.
Снова, хороший принцип разработки диктуют, что Вы разрабатываете объекты области или бизнес-объекты сначала. Это - все "существительные" в Вашем приложении. Скажите, что Вы хотите разработать веб-сайт, который показывает бейсбольную статистику для плееров высшей лиги. Объекты области здесь являются существительными "плееры", "статистика", "бейсбол", "лига" и так далее. Для каждого из них Вы создаете модель предметной области и соответствующую таблицу базы данных. Затем Вы начинаете думать о функциональности, Вы хотите добавить к каждому, например, Плеер. CareerSpan () или Плеер. GamesPlayer (международный год).
Дизайн интерфейса может также произойти параллельно, и здесь также необходимо использовать макеты или на бумаге или использующий некоторые инструменты (макеты Balsamiq мой фаворит).
В какой-то момент это просто сводится к персональному управлению и избегающий отслеживания в обратном порядке. При отмене слишком большого количества кода что-то выключено. Система управления исходным кодом поможет Вам понять это также.
Я запускаю с модели-> доступ к данным-> схема базы данных-> UI
я делаю то же самое для каждой пользовательской истории (и да делают разработку через тестирование),
Я склонен запускаться с базы данных и обрабатывать назад, как выполнение объекта, моделирующего для меня, имеет тенденцию выделять проблемы.
Оттуда я затем создам базовую структуру Веб-приложения (который в Java означает создавать мой проект, добавляя Spring, настраивая источники данных и безопасность и так далее).
После того как у меня есть вся инфраструктура, я буду, затем создавая доступ к данным, контроллеры и представления, обычно создавая одного из каждого для получения подтверждения концепции или так же, как amodel, чтобы младшие разработчики следовали.
Веб-приложения являются итеративными процессами (как правило), и я нахожу, что он лучше всего создает вертикальную часть как можно скорее.
Вы упомянули, что являетесь одними в своей работе.
Ответ выше Koistya хорош. Однако я нашел, что путем получения UI в showable состоянии сохраняю клиента более счастливым и получаю их закрытие сделки довольно быстро.
При разработке один, сделайте любые работы для Вас. Вот некоторые другие ресурсы для Вас для взгляда на в то время как придумывающий любые работы для Вас. Сообщите, что эти другие подходы принимают команду.
Я надеюсь, что это помогает.