Краткий обзор того, как работает D3.js
В своем последнем посте я рассмотрел некоторые варианты синтаксиса Python и JavaScript. В этом посте я хочу кратко рассмотреть один из наиболее рекомендуемых инструментов визуальной библиотеки, доступных для JS. Документы, управляемые данными, также более известные как D3.js, — это визуальная библиотека, которая для JS является такой же, как matplotlib для Python.
D3 работает на основе HTML (который используется практически для отображения настроек всех веб-страниц). С помощью D3 мы можем создавать статические таблицы в телах HTML, подобно тому, как мы делаем это в Python с Pandas, SQL или любыми визуальными инструментами. Но D3 также можно использовать для создания динамического изображения, как мы могли бы сделать с SeaBorn или создать панель управления в Python. Создание информационной панели в Python требует от вас знания HTML-кодов и сложных «вызывающих» функций, которые позволяют вам визуализировать что-то конкретное, вызывая определенные атрибуты этого.
В HTML код примера будет выглядеть примерно так:
var paragraphs = document.getElementsByTagName("p");
for (var i = 0; i < paragraphs.length; i++) {
var paragraph = paragraphs.item(i);
paragraph.style.setProperty("color", "blue", null);
}
Однако, если мы используем D3, те же фрагменты кода можно сократить до этого:
d3.selectAll("p").style("color", "blue");
Он создал простой однострочный код, в котором все элементы с тегом «P» будут окрашены в синий цвет на странице отображения HTML (также известной как панель инструментов или страница просмотра). Но это еще не все. Вы можете дополнительно настроить, указав термины, как это сделано ниже:
d3.select("body").style("background-color", "black");
Это выделит все элементы «тела» и сделает фон черным. Вы даже можете добавить эффект перехода, сделав это:
d3.select("body").transition() #just add transition before style
.style("background-color", "black");
Это отличные примеры статических изменений. Как насчет того, чтобы мы хотели, чтобы изменение происходило каждый раз, когда мы обновляем страницу или повторно посещаем ее? Это был бы пример динамических изменений, и хотя он немного сложнее, его можно сделать, используя следующий пример:
#To randomly change or add colorsd3.selectAll("p").style("color", function() { return "hsl(" + Math.random() * 360 + ",100%,50%)"; });
#To change color between even and odd numbersd3.selectAll("p").style("color", function(d, i) { return i % 2 ? "#fff" : "#eee"; });
D3 также создал замечательную галерею с множеством примеров того, как создавать потрясающие визуальные эффекты вместе с их живым кодом. Вы можете изменить коды, чтобы увидеть, что изменилось, и я настоятельно рекомендую вам проверить их.
Ниже я приведу ссылки на некоторые из моих любимых работ, но ссылка на всю галерею также будет доступна в конце.
По приведенной ниже ссылке показано, как создать разнообразную цветную пузырьковую диаграмму с размером в зависимости от данных (поэтому D3 называется документами, управляемыми данными).
Вот динамическая диаграмма, которая обнаруживает возможное столкновение с объектом (в данном случае с вашей мышью), и дисплей удаляется от него. Это напоминает мне старые изображения рыбы в аквариуме, которые были очень популярны в Google Blogspot в начале 2010-х годов.
И, наконец, изображение, похожее на классическую панель инструментов или график линейной регрессии на IPO Facebook:
Даже если вы новичок в JS, я рекомендую поиграть с D3, так как визуальные эффекты, которые вы можете сделать, более динамичны и менее ограничены, чем matplotlib.