Below is the text of the page https://textura.in.ua/rss stored 2017-09-13 by archive.org.ua. The original page over time could change. View as original html

інфографіка, журналістика даних, статистика, візуалізаціяTumblr (3.0; @infographicsinua)http://textura.in.ua/

Середній вік першого шлюбу


Ще одна версія графіки про середній вік першого шлюбу в Україні.

Так звана tilegrid map - суміш таблиці та карти. Використовується в якості альтернативи хороплетним картам.

Тут все ще зберігається кодування інформації за допомоги кольору, але всі полігони однакового розміру, що має спростити зчитування інформації.

З іншого боку, спершу треба звикнути до цієї абстракції географії. Може бути непросто, але не неможливо. Саме тому всі області підписані, на звичайній карті можна було дозволити собі цього не робити.

Однак є питання щодо подальшого використання таких “карт” у меншому форматі, де може не бути достатньо місця для повних підписів областей. Чи є усталений скорочений формат запису областей за аналогією із скороченим записом назв штатів? Якщо нема, то може запозичити формат у доменів областей?

Легенда в цьому конкретному випадку не потрібна, оскільки всюди є підписи значень.


Дивіться також

Замітка про Tilegrid Maps

Середній вік першого шлюбу, візуалізація

Код і дані на GitHub

http://textura.in.ua/post/164514030315http://textura.in.ua/post/164514030315Wed, 23 Aug 2017 10:19:18 +0300Rstatsggplot2datavizстатистикаукраїнанаселеня

Середній вік першого шлюбу


Експериментальна, скажімо так, візуалізація. Хочу згодом ще зробити анімацію всього процесу - від стандартної конвенційної візуалізації до ось цього.

Що тут незвичного?

Сітка не по всій площині графіку, а лише там, де є дані. Тобто лише там, де вона насправді. потрібна. Втім, незаповнний простір графіку змушує замислитись про роль сітки не лише як розмітки для орієнтації у площині візуалізації, а й як про спосіб заповнення цієї площині.

Підписи значень на вісях. Значення вісі Х рознесені на дві вісі - верхню і нижню, за тим же принципом - підписи є лише там, де є дані. Значення вісі Y не вирівняні з лівого боку, як це зазвичай буває, а наближені до точок на графіку. Загальна ідея позиціонування підписів на вісях - покращити ергономіку візуалізації.

Легенда, зрощена із підзаголовоком. Можна було б, звісно, заповнювати, дірку зліва легендою, але це трохи суперечить ідеї ергономіки візуалізації, тому легенда тут займає дуже мало місця і не від’їдає його у інших частин графіку.

Сприймайте це суто як експеримент. Дослідження можливостей.


Код і дані на GitHub

http://textura.in.ua/post/164476753235http://textura.in.ua/post/164476753235Tue, 22 Aug 2017 11:00:13 +0300ggplot2Rstatsdatavizukrainestatisticsукраїнанаселеннястатистика

Споживання електроенергії впродовж дня


Другий графік на тему споживання електроенергії в Україні. Цього разу - про споживання в розрізі годин доби та місяців. Цікаво спостерігати не лише зміни рівня споживання від місяця до місяця, але й зміщення денних піків навантаження.


Дивіться також

Погода та споживання електроенергії

Код і дані обох проектів на GitHub

http://textura.in.ua/post/164191394205http://textura.in.ua/post/164191394205Tue, 15 Aug 2017 01:49:23 +0300datavizRstatsggplot2українаелектроенергія

Погода та споживання електроенергії


Візуалізація на основі даних Укренерго щодо погодинного балансу потужності об’єднаної електроенергетичної системи України та даних щодо середньодобової температури у 2016 році.

Дані щодо температури надаються у розрізі метеостанцій, для цієї візуалізації спостереження з метостанцій усереднені.


Дивіться також

Дані щодо споживання електроенергії на Порталі відкритих даних

Дані щодо середньодобової температури в розрізі метеостанцій на порталі National Oceanic and Atmoshperic Administration

Код на GitHub

http://textura.in.ua/post/164096844805http://textura.in.ua/post/164096844805Sat, 12 Aug 2017 16:21:28 +0300електроенергіяdatavizRstatsggplot2ukraine

Частотність літер залежно від позиції у слові. Нормалізовані дані


Після публікації візуалізації із частотністю слів залежно від позиції у слові отримав кілька порад нормалізувати дані за довжиною слова. Totally makes sense!

Отже, замість оперувати абсолютними позиціями літер у слові, ми тепера оперуємо відносними, зваженими на довжину слова.

Що дає нормалізація в цьому випадку? Всі літери, що вживаються наприкінці слова, в результаті нормалізації отримують однакову позицію - 1, незалежно від довжини слова. Всі літери, що вживаються в середині слова, отримують позицію 0.5, незалежно від довжини слова.

В першу чергу це працює на краще виявлення паттернів закінчень слів. Зверніть увагу на Й, Ь та Я. Ще, здається, можна помітити подвоєне Н.

З технічної точки зору - замість ribbon тепера density, у зв’язку з чим змінилося позиціонування літер. Новий варіант подобається значно більше за попередній. Power of iteration!


Читайте також

Частотність літер у словнику української мови

Частотність літер залежно від позиції у слові

Код на GitHub

http://textura.in.ua/post/163999465135http://textura.in.ua/post/163999465135Thu, 10 Aug 2017 01:23:33 +0300datavizRstatsggplot2languageukraineukranian

Частотність літер залежно від позиції у слові


Між іншим, з цього графіку можна дізнатись, що: 1) у словнику української мови нема слів, які починаються з літери “И”; 2) більше ніж в половині випадків літера “П” вживається на початку слова; 3) літера “Я” переважно вживається наприкінці слова.


Частотність літер у словнику української мови

Код на GitHub

http://textura.in.ua/post/163941109455http://textura.in.ua/post/163941109455Tue, 08 Aug 2017 13:19:24 +0300datavizRstatslanguageukraineukrainianggplot2

Частотність літер у словнику української мови


Спонтанне дослідження, зроблене за пару-трійку вечорів. Замислювалось суто як дата-арт, але не склалось. То ж буде набір візуалізацій. Перша - просто про найбільш вживані літери у словнику української мови.

Звісно, може словник це такі собі лабораторні умови і тре було робити на якомусь великому корпусі (на корпусі статей з Вікіпедії, скажімо). Може згодом так і зроблю, цікаво, наскільки результати будуть відрізнятись.


Код на GitHub

http://textura.in.ua/post/163911382515http://textura.in.ua/post/163911382515Mon, 07 Aug 2017 20:05:06 +0300datavizggplot2languagelettersukranianRstats

Статистика прослуховування музики: відкриття проти повторення


Нещодавно дивився відео з конференції Plotcon, де один з працівників Spotify розповідав, як вони аналізують дані прослуховування музики своїх користувачів, та в який спосіб вони ці дані візуалізують. Там багато цікавого, але зокрема мені подумалось, що я можу спробувати відтворити візуалізацію, яка розкладає всі сесії прослуховування музики на предмет відкриття нових композицій та повторення вже відомих.

Задачі, котрі тут стояли: отримати всі дані щодо прослуховування музики (для цього я використав API сервісу Last.fm, спочатку вправлялвся на своїх даних, потім взявся за своїх друзів); розбити прослуховування на сесії (тут був простий критерій - якщо між двома композиціями є пауза більше ніж в 15 хвилин, тоді вважається, що ці композиції належать до двох окремих сесій; звісно, цю класифікацію ще можна покращувати); класифікувати всі треки на “новий” та “вже відомий” (тут є нюанс, що спершу всі треки класифікуються як “нові”).

Принцип дуже простий - кожна лінія це окрема сесія прослуховування музики. Довжина лінії відповідає кількості композицій у сесії. Положення точки, за якою відмальовується лінія, на осі Y відповідає порядковому номеру композиції у сесії. Положення точки, за якою відмальовується лінія, на осі X визначається статусом “нова” чи “вже відома” композиція. Якщо користувач слухає композицію, котрої ще нема в його базі, лінія зміщується на одну позицію вправо. Якщо користувач слухає композицію, котра вже є в його базі, лінія зміщується на одну позицію вліво. Колір лінії присвоюється на підставі статусу сесії - “відкриття” чи “повторення”, тобто на підставі того, яких композицій - нових чи вже відомих - було більше у цій сесії.

Суто з технічної точки зору для мене стало приємним відкриттям, що у бібліотеці ggplot2 можливо використовувати geom_line() в поєднанні з position=‘jitter’. Ця комбінація власне і визначила значною мірою вигляд візуалізації.

Далі буде.


Код на GitHub

Відео - Edward Lee, Visualizing 100,000,000 Music Fans

http://textura.in.ua/post/163361725140http://textura.in.ua/post/163361725140Mon, 24 Jul 2017 12:35:03 +0300ggplot2Rstatsdatavizmusiclastfm

Температура в Києві, 1812-2016 рік


Черговий експеримент із візуалізацією розподілу значень на прикладі погодних даних. Тут головна хитрість була в тому, аби трохи модифікувати geom_step() за рахунок дублювання даних за останній місяць. Ну і ще з підписами цікаво було повозитись.

Код і дані на GitHub.


Більше про погоду

Weather Radials

Температура в Києві, розподіл за місяцями 2016 року

Температура в Києві, 1900-2016 рік

http://textura.in.ua/post/162910213800http://textura.in.ua/post/162910213800Wed, 12 Jul 2017 22:46:38 +0300ggplot2datavizweatherKyivukrainebarcode

Медіанний вік населення в Україні у 1989-2016 роках


Ще одна забавка із бібліотекою geofacet. Принципово ніц нового, але цікава штука в даних - суттєва відмінність даних за 2002 рік від даних за решту років.

Відмінність зумовлена тим, що дані за 2002 рік подаються за результатами перепису населення від 5 грудня 2001 року (аналогічно, дані за 1989 рік подаються за результатами перепису станом на 12 січня 1989 року).

У всі інші роки показники надходять зі “спеціальних обстежень”, актів реєстрації цивільного стану, талонів реєстрації (та зняття з реєстрації) мігрантів.


Код і дані на GitHub.

Джерело даних.

Як Держстат обчислює медіанний вік населення.


Читайте також

Очікувана тривалість життя в Україні в розрізі вікових груп та статей

Статево-вікова піраміда населення України

http://textura.in.ua/post/162548886370http://textura.in.ua/post/162548886370Mon, 03 Jul 2017 16:02:40 +0300datavizggplot2geofacetpopulationдержстатнаселеннястатистикавізуалізація даних

Природний приріст/скорочення населення в Україні, 1990-2015


Днями Райан Хафен опублікував бібліотеку geofacet, котра є доповненням чи б пак розширенням для ggplot2, і дозволяє створювати власні сітки для розташування панелей із small multiples.

Тобто на додачу до facet_wrap() та facet_grid() додає функцію facet_geo(), що дозволяє впорядковувати панелі із графіками таким чином, що їхнє розташування буде відтворювати розташування регіонів, країн, штатів, областей, міст на карті.

Що це дає?

  1. Кожна панель може репрезентувати масив даних замість одного значення, як на карті.
  2. Кожна панель може містити будь-яку візуалізацію, котру можна зробити за допомоги ggplot2.
  3. Розташування панелей може відтворювати будь-яку топологію - країни певного регіону, регіони певної країни чи райони міста.

Створені в такий спосіб візуалізації поєднують в собі властивості карти та графіку, вони дозволяють створювати small multiples із великою кількістю даних і при цьому надають можливість простежувати регіональні тренди.

У самій бібліотеці geofacet є шаблони для розташування американських штатів та країн ЄС. Але на додачу до бібліотеки Райан Хафен опублікував також інструмент Geo Grid Designer, котрий дозволяє конструювати власні сітки для будь-яких топологій. Сконструйовані сітки можна додати в бібліотеку для загального користування.


Код і дані на GitHub.

Бібліотека geofacet.

Geo Grid Designer.

http://textura.in.ua/post/162230527400http://textura.in.ua/post/162230527400Sun, 25 Jun 2017 10:57:16 +0300populationstatisticsdemographicsстатистикаукраїнанаселенядержстатдемографіяНімецька журналістка Ліза-Шарлотта Крост провела цікавий експеримент з візуалізації даних - вона...http://textura.in.ua/post/161502264180http://textura.in.ua/post/161502264180Tue, 06 Jun 2017 13:58:31 +0300конспекттеоріявізуалізація данихінструментарій



Графіка для проекту “Вони голосують для тебе” від “Опори”

Стаття “Рада все менше підтримує законопроекти Порошенка”

Код і дані на GitHub.

http://textura.in.ua/post/159719435640http://textura.in.ua/post/159719435640Tue, 18 Apr 2017 19:01:11 +0300Rstatsdatavizggplot2











Weather Radials

Пару років тому вже відтворював weather radials за допомоги ggplot2 (саме з тієї візуалізації, можна сказати, і почалось моє захоплення цією бібліотекою і граматикою графіки загалом). Але тоді процес не був стовідсотково reproducible, я трохи наводив лоску у графічному редакторі.

Тепера дійшли нарешті руки зробити все максимально відтворюваним у коді. Майже спортивний інтерес був.

Кожен сегмент на графіку показує діапазон температур впродовж доби, колір сегменту позначає середньодобову температуру. Дані - за 2016 рік.

Дані отримані через АРІ Weather Underground.

Код для генерації візуалізацій на Github.

http://textura.in.ua/post/159453729360http://textura.in.ua/post/159453729360Tue, 11 Apr 2017 17:36:42 +0300ggplot2datavizweather radialsweatherviridisRstats

Очікувана тривалість життя за статтю і віком у 2015 році

Хтів зробити цю візуалізацію ще пару років тому, навіть чернетка була готова, але все ніяк не був задоволений результатом. Нарешті знайшов час оновити дані і переробити графіку. Справу закрито.

Візуально - все просто і ніц особливого, для кожної вікової групи показуємо, умовно кажучи, “скільки лишилось” жити (умовно, бо ж це “очікувана тривалість життя” все ж таки).

Тепера ще тре зробити розподіл померлих за віком.

Дані - із статистичного щорічника “Населення України”, він в pdf, але Tabula рятує.

Код і дані на GitHub

http://textura.in.ua/post/157696719515http://textura.in.ua/post/157696719515Sat, 25 Feb 2017 18:59:59 +0200datavizggplot2RstatsЦього тижня був одним з тренерів на Техкемпі у Варшаві. В рамках Техкемпу кожен з тренерів мав...http://textura.in.ua/post/157435074920http://textura.in.ua/post/157435074920Sun, 19 Feb 2017 13:04:00 +0200storytellingstorytelling with data

Мої телефонні розмови

Знайшов час нарешті трохи порозбиратись із даними логів телефонних розмов, які збираю вже понад рік.

Дані збираються за допомоги сервісу IFTTT, для кожного вхідного чи вихідного дзвінка створюється запис у табличці (в Google Spreadsheets) із номером та іменем людини (якщо є в адресній книзі), часом дзвінка, тривалістю розмови у секундах.

Для вхідних і вихідних дзвінків окремі файли. З цих файлів за допомоги R і бібліотеки gsheet забираються дані, трохи трансформуються, та на основі їх вже генеруються візуалізації.

То ж перший підхід - просто подивитись на усі дзвінки у розрізі днів та годин доби, а також тривалості розмов.

Одразу очевидно, що я загалом не дуже багато спілкуюсь по телефону. Бува таке, що я можу не використовувати телефон для розмов кілька днів поспіль. А ті розмови, що є, зазвичай доволі короткі. Видно також, що вхідних дзвінків більше, ніж вихідних.

Наступний крок - розділити дзвінки на категорії - “робочі”, “особисті”, “інше”. Та додати анотації до тих дзвінків, про які мені є що згадати.

Скажімо, збільшення вихідних дзвінків на самому початку січня цього року - це зовсім не про моє бажання обдзвонити всіх та привітати з Новим роком. Це про аварію мого інтернет провайдера, та постійне спілкування із службою підтримки. Подібні анотації здатні суттєво розширити історію, зробити її цікавішою.

Ну і, звісно, є ще інші варіанти візуалізації цих даних, котрі дозволять подивитись на дані (та на мої комунікації) під іншим кутом.

Суто з технічної точки зору в цій графіці найцікавіше було робити легенду, а саме позиціонувати її та прибирати у кульок заповнення.

http://textura.in.ua/post/157144864520http://textura.in.ua/post/157144864520Sun, 12 Feb 2017 15:59:58 +0200iftttlifeloggingquantified selfself-trackingggplot2Rstats



GPS-треки Києва з Openstreetmap

Витяг з Openstreetmap всі GPS-треки у Києві. Для цього написав маленький скрипт на Python (можна було і через JOSM, але ті файли, що повертаються з API, простіше потім розпарсити у потрібний формат).

Всього вийшло 2640 треків, звісно, всі вони різної довжини. Якісь треки йдуть із таймстемпом (вони представляють основний інтерес для подальшої роботи), інші - просто з координатами. Загалом 6,5 млн точок.

Звісно, перше, що зробив - наніс на карту всі треки за допомоги пайтонівської бібліотеки Datashader. Вона призначена саме для візуалізації великих масивів даних, і впоралась із цією задачею дуже швидко.

Далі буде.

http://textura.in.ua/post/156535403410http://textura.in.ua/post/156535403410Sun, 29 Jan 2017 17:43:22 +0200osmgpxdatavizmapdatashader

Температура в Києві, розподіл за місяцями 2016 року

Чергова вправа, спроба відтворити візуалізацію FiveThirtyEight, натхнену обкладинкою альбому Joy Division ‘Uknown Pleasures’.

Для цього довелось написати свій wrapper для API Weather Underground, оскільки бібліотека rwunderground регулярно видавала помилки (наприклад, стверджувала, що мого ключа АРІ не існує) , або ж повертала дані із пропусками.

Із цікавих задач, пов’язаних суто з візуалізацією - позиціонування графіків таким чином, аби вони накладались один на одного (там, де це можливо); позиціонування підписів місяців (виявилось, що geom_text в ggplot2 працює не дуже красиво, якщо використовувати facets, тому довелось шукати workarounds); позиціонування ліній, котрі позначаюь медіанну температуру для кожного місяця.

Код і дані на GitHub.

http://textura.in.ua/post/156076069610http://textura.in.ua/post/156076069610Thu, 19 Jan 2017 12:48:57 +0200uknown pleasuresjoy divisionggplot2weatherdatavizrstats

Хроніка чистки банківської системи України

Задля практики вирішив візуалізувати датасет Нацбанку про реорганізацію та ліквідацію банків, простіше - про чистку банківської системи. Не найцікавіший у світі датасет, звісно, але у мене була ідея для візуалізації, і цікаво було перевірити, чи вона спрацює на реальному наборі даних.

Отже, тут є спроба подивитись на ліквідацію банків як на процес. Котрий починається зазвичай (але не обов’язково) із визнання банку неплатоспроможним та запровадження у ньому тимчасової адміністрації. В разі, якщо тимчасова адміністрація розуміє, що “тут вже нічого не виправити” (з інвесторами банку домовитись не виходить, ніякої стабілізації роботи фінустанови не буде), НБУ ухвалює рішення про ліквідацію банку.

На графіку показані всі банки, ліквідовані НБУ з 2014 року (тобто не показані ті, які було визнано неплатоспроможними, але не ліквідовано). Очевидно, що у 2016 році Нацбанк почав приймати рішення про ліквідацію банку швидше (себто скоротився період від запровадження тимчасової адміністрації до прийняття рішення про ліквідацію).

Але у випадку із цією візуалізацією мені не так цікаві самі дані, як маленькі рішення на зразок положення осей (зверху і зправа замість традиційних знизу і зліва), оберненої осі Y та інтервалів на цій осі (jenks замість звичних рівних інтервалів типу 0, 100, 200, 300, 400 - дозволяє ліпше зрозуміти розподіл величин).

Код і дані на GitHub.

http://textura.in.ua/post/155845640490http://textura.in.ua/post/155845640490Sat, 14 Jan 2017 12:15:58 +0200нбубанкиggplot2інфографікавізуалізація даних