Jump to content

D3.js

(Перенаправлено с D3js )

Разработчик(и) Майк Босток , Джейсон Дэвис, Джеффри Хир , Вадим Огиевецкий и сообщество
Первоначальный выпуск 18 февраля 2011 г .; 13 лет назад ( 18 февраля 2011 )
Стабильная версия
7.9.0 [1] Отредактируйте это в Викиданных / 12 марта 2024 г .; 4 месяца назад ( 12 марта 2024 г. )
Репозиторий
Написано в JavaScript
Тип Визуализация данных , библиотека JavaScript
Лицензия БСД
Веб-сайт d3js .org

D3.js (также известный как D3 , сокращение от Data-Driven Documents ) — это библиотека JavaScript для создания динамических интерактивных визуализаций данных в веб-браузерах . Он использует стандарты масштабируемой векторной графики (SVG), HTML5 и каскадных таблиц стилей (CSS). Это преемник более ранней платформы Protovis. [2] Его развитие было отмечено в 2011 году, [3] поскольку версия 2.0.0 была выпущена в августе 2011 года. [4] С выпуском версии 4.0.0 в июне 2016 года D3 превратилась из одной библиотеки в набор небольших модульных библиотек, которые можно использовать независимо. [5]

Контекст

[ редактировать ]

Ранее предпринимались различные попытки реализовать визуализацию данных в веб-браузерах. Наиболее яркими примерами были наборы инструментов Prefuse, Flare и Protovis, которые можно считать прямыми предшественниками D3.js. [ нужна ссылка ]

Prefuse — это набор инструментов для визуализации, созданный в 2005 году, который требовал использования Java , а визуализации отображались в браузерах с помощью подключаемого модуля Java. Flare представлял собой аналогичный набор инструментов 2007 года, который использовал ActionScript и требовал подключаемого модуля Flash для рендеринга. [ нужна ссылка ]

В 2009 году, основываясь на опыте разработки и использования Prefuse и Flare, Джеффри Хир , Майк Босток и Вадим Огиевецкий из Stanford Visualization Group Стэнфордского университета создали Protovis, библиотеку JavaScript для создания графики SVG из данных. Библиотека была известна практикам визуализации данных и ученым. [6]

В 2011 году разработка Protovis была остановлена, чтобы сосредоточиться на новом проекте D3.js. Опираясь на опыт работы с Protovis, Босток вместе с Хиром и Огиевецки разработали D3.js, чтобы обеспечить более выразительную среду, которая в то же время фокусируется на веб-стандартах и ​​обеспечивает повышенную производительность. [7]

Технические принципы

[ редактировать ]

Библиотека D3.js использует встроенные функции для выбора элементов, создания объектов SVG, их стилизации или добавления переходов, динамических эффектов или всплывающих подсказок . Этим объектам также можно стилизовать с помощью CSS. Большие наборы данных можно привязать к объектам SVG с помощью функций D3.js для создания текстовых/графических диаграмм и диаграмм. Данные могут быть в различных форматах, таких как JSON , значения, разделенные запятыми (CSV) или geoJSON , но при необходимости можно написать функции JavaScript для чтения других форматов данных.

Центральный принцип проектирования D3.js заключается в том, чтобы позволить программисту сначала использовать селектор в стиле CSS для выбора заданного набора узлов объектной модели документа (DOM), а затем использовать операторы для управления ими аналогично jQuery . [8] Например, можно выбрать все элементы абзаца HTML (представленные <p>...</p>), а затем измените цвет текста, например, на лавандовый:

 d3.selectAll("p")                 // select all <p> elements
   .style("color", "lavender")     // set style "color" to value "lavender"
   .attr("class", "squares")       // set attribute "class" to value "squares"
   .attr("x", 50);                 // set attribute "x" (horizontal position) to value 50px

Выбор может быть основан на HTML-теге, классе, идентификаторе, атрибуте или месте в иерархии. После того как элементы выбраны, к ним можно применять операции. Сюда входит получение и установка атрибутов, отображаемых текстов и стилей (как в приведенном выше примере). Элементы также можно добавлять и удалять. Этот процесс изменения, создания и удаления элементов HTML можно сделать зависимым от данных, что является базовой концепцией D3.js.

Переходы

[ редактировать ]

Объявив переход, значения атрибутов и стилей можно плавно интерполировать в течение определенного времени. Следующий код сделает весь HTML <p>...</p> элементы на странице постепенно меняют цвет текста на розовый:

 d3.selectAll("p")             // select all <p> elements
   .transition("trans_1")      // transition with name "trans_1"
     .delay(0)                 // transition starting 0ms after trigger
     .duration(500)            // transitioning for 500ms
     .ease(d3.easeLinear)           // transition easing progression is linear...
   .style("color", "pink");    // ... to color:pink

Привязка данных

[ редактировать ]

Для более продвинутого использования загруженные данные управляют созданием элементов. D3.js загружает заданный набор данных, затем для каждого из его элементов создает объект SVG со связанными свойствами (форма, цвета, значения) и поведением (переходы, события). [9] [10] [11]

// Data
  var countriesData = [
     { name: "Ireland", income: 53000, life: 78, pop: 6378, color: "black" },
     { name: "Norway", income: 73000, life: 87, pop: 5084, color: "blue" },
     { name: "Tanzania", income: 27000, life: 50, pop: 3407, color: "grey" }
  ];
// Create SVG container
  var svg = d3.select("#hook").append("svg")
        .attr("width", 120)
        .attr("height", 120)
        .style("background-color", "#D0D0D0");
// Create SVG elements from data 
    svg.selectAll("circle")                  // create virtual circle template
      .data(countriesData)                   // bind data
       .join("circle")                                 // joins data to the selection and creates circle elements for each individual data
        .attr("id", function(d) { return d.name })            // set the circle's id according to the country name
        .attr("cx", function(d) { return d.income / 1000  })  // set the circle's horizontal position according to income 
        .attr("cy", function(d) { return d.life })            // set the circle's vertical position according to life expectancy 
        .attr("r",  function(d) { return d.pop / 1000 *2 })   // set the circle's radius according to country's population 
        .attr("fill", function(d) { return d.color });        // set the circle's color according to country's color

Сгенерированная графика SVG разрабатывается в соответствии с предоставленными данными.

Добавление узлов с использованием данных

[ редактировать ]

После привязки набора данных к документу использование D3.js обычно следует шаблону, в котором явное .enter() функция, неявное «обновление» и явное .exit() Функция вызывается для каждого элемента в связанном наборе данных. Любые методы, связанные после .enter() команда будет вызываться для каждого элемента набора данных, который еще не представлен узлом DOM в выборке (предыдущий selectAll()). Аналогично, неявная функция обновления вызывается для всех существующих выбранных узлов, для которых есть соответствующий элемент в наборе данных, и .exit() вызывается для всех существующих выбранных узлов, у которых нет элемента в наборе данных для привязки к ним. В документации D3.js приведено несколько примеров того, как это работает. [12]

См. также

[ редактировать ]
  1. ^ «Выпуск 7.9.0» . 12 марта 2024 г. Проверено 22 марта 2024 г.
  2. ^ «Для пользователей Protovis» , Mbostock.github.com , заархивировано из оригинала 6 августа 2012 г. , получено 18 августа 2012 г.
  3. ^ Мятт, Гленн Дж.; Джонсон, Уэйн П. (сентябрь 2011 г.), «5.10 Дополнительная литература» , «Осмысление данных III: Практическое руководство по проектированию интерактивных визуализаций данных» , Хобокен, Нью-Джерси: John Wiley & Sons , стр. А–2, ISBN  978-0-470-53649-0 , получено 23 января 2013 г.
  4. ^ «Примечания к выпуску» , D3.js , получено 22 августа 2012 г.
  5. ^ "Релиз v4.0.0 · d3/ d3 Гитхаб . 28 июня , Получено 27 , декабря
  6. ^ Академический пример: Савва, Манолис; Конг, Николас; Чхайта, Арти; Ли, Фейфей; Агравала, Маниш; Хир, Джеффри (2011), «ReVision: автоматизированная классификация, анализ и редизайн изображений диаграмм» , Программное обеспечение и технологии пользовательского интерфейса ACM , получено 23 января 2013 г.
  7. ^ Босток, Огиевецкий и Хир, 2011 г.
  8. ^ Босток, Огиевецкий и Хир, 2011 , гл. 3
  9. ^ Босток, Майк (5 февраля 2012 г.), Думая с объединениями
  10. ^ «Ручка Лопеса Хьюго» . Codepen.io . Архивировано из оригинала 22 марта 2016 года . Проверено 1 августа 2016 г.
  11. ^ «Редактировать скрипку» . JSFiddle.net . Проверено 1 августа 2016 г.
  12. ^ «Три маленьких круга» . Mbostock.github.io . Проверено 1 августа 2016 г.

Дальнейшее чтение

[ редактировать ]
Общая информация о самом D3.js
Использование D3.js — начальный уровень
Использование D3.js — средний уровень
Другие
Видео
[ редактировать ]
  • Грамматики визуализации Vega и Vega-Lite представляют собой декларативную спецификацию визуализации, построенную на основе частей D3.js.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: c71bc002bbd2400a1d209826bd38589d__1714999020
URL1:https://arc.ask3.ru/arc/aa/c7/9d/c71bc002bbd2400a1d209826bd38589d.html
Заголовок, (Title) документа по адресу, URL1:
D3.js - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)