From 2db251a0a47494088295f8db62440461d6d58a3e Mon Sep 17 00:00:00 2001 From: Oleh Omelchenko Date: Mon, 23 Dec 2024 21:11:10 +0200 Subject: [PATCH] add some articles --- content/posts/_index.md | 0 content/posts/dataviz-blogs.md | 26 + content/posts/dataviz-books-ua.md | 41 +- content/posts/forbes-50-foundations.md | 925 +++++++++++++++++++ content/posts/vega-altair-hugo-shortcodes.md | 145 +++ content/til/_index.md | 0 content/til/dataviz-blogs.md | 10 - content/til/obsidian-paperless.md | 12 + hugo.yaml | 2 +- layouts/partials/extend_head.html | 4 + layouts/shortcodes/vega-lite.html | 17 +- themes/PaperMod | 2 +- 12 files changed, 1149 insertions(+), 35 deletions(-) create mode 100644 content/posts/_index.md create mode 100644 content/posts/dataviz-blogs.md create mode 100644 content/posts/forbes-50-foundations.md create mode 100644 content/posts/vega-altair-hugo-shortcodes.md create mode 100644 content/til/_index.md delete mode 100644 content/til/dataviz-blogs.md create mode 100644 content/til/obsidian-paperless.md diff --git a/content/posts/_index.md b/content/posts/_index.md new file mode 100644 index 0000000..e69de29 diff --git a/content/posts/dataviz-blogs.md b/content/posts/dataviz-blogs.md new file mode 100644 index 0000000..8369994 --- /dev/null +++ b/content/posts/dataviz-blogs.md @@ -0,0 +1,26 @@ +--- +title: Блоги та Ресурси з візуалізації даних +date: 2024-07-20 +draft: false +tags: + - Датавіз +--- + +- https://datatowel.in.ua/ - демографія, економіка, електоральна географія України +- https://texty.org.ua/projects/ - журналістика даних українською +- https://observablehq.com/@ndrhzn - сторінка Андрія Газіна на Observable +- https://fedir.gontsa.com/ + +- https://lisacharlottemuth.com/ +- https://dataanddragons.wordpress.com/ +- https://www.visualcinnamon.com/ +- https://visualisingdata.com/ +- http://www.studioterp.nl/ +- https://flowingdata.com/ +- https://truth-and-beauty.net/ +- https://datastori.es/ +- https://www.allitorban.com/ +- https://nightingaledvs.com/ +- https://dunne.dev/ +- https://www.data-to-viz.com/ +- \ No newline at end of file diff --git a/content/posts/dataviz-books-ua.md b/content/posts/dataviz-books-ua.md index 0d8969e..84c0edf 100644 --- a/content/posts/dataviz-books-ua.md +++ b/content/posts/dataviz-books-ua.md @@ -2,31 +2,36 @@ title: Книги та ресурси з аналізу та візуалізації даних (українською та не тільки) date: 2024-07-23 draft: false +tags: + - Датавіз +languages: + - R + - Python --- ### Аналіз даних -* **The Data Journalism Handbook**: - * [переклад українською на texty.org.ua (2015)](https://texty.org.ua/archive-books/40161/zhurnalistyka-danykh-posibnyk-40161/), - * PDF EN - [Part 1](https://static.olehomelchenko.com/The-Data-Journalism-Handbook-1.pdf), - * PDF EN - [Part 2](https://static.olehomelchenko.com/The-Data-Journalism-Handbook-2.pdf) -* **Довідник із поганих даних від Quartz**: - * [переклад українською на texty.org.ua](https://texty.org.ua/archive-books/90212/dovidnyk-iz-pohanykh-danykh-vid-quartz-90212/) - * The Quartz guide to bad data - [Оригінал EN (GitHub)](https://github.com/Quartz/bad-data-guide) +- **The Data Journalism Handbook**: + - [переклад українською на texty.org.ua (2015)](https://texty.org.ua/archive-books/40161/zhurnalistyka-danykh-posibnyk-40161/), + - PDF EN - [Part 1](https://static.olehomelchenko.com/The-Data-Journalism-Handbook-1.pdf), + - PDF EN - [Part 2](https://static.olehomelchenko.com/The-Data-Journalism-Handbook-2.pdf) +- **Довідник із поганих даних від Quartz**: + - [переклад українською на texty.org.ua](https://texty.org.ua/archive-books/90212/dovidnyk-iz-pohanykh-danykh-vid-quartz-90212/) + - The Quartz guide to bad data - [Оригінал EN (GitHub)](https://github.com/Quartz/bad-data-guide) ### Візуалізація даних -* **Fundamentals of Data Visualization** by Claus O. Wilke: [clauswilke.com/dataviz](https://clauswilke.com/dataviz/) -* **Good Charts: The HBR Guide to Making Smarter, More Persuasive Data Visualizations** - * EN: [Amazon](https://www.amazon.com/dp/1633690709) -* **Good Charts Workbook: Tips, Tools, and Exercises for Making Better Data Visualizations** - * EN: [Amazon](https://www.amazon.com/dp/1633696170) - * Українською: [ArtHuss](https://www.arthuss.com.ua/shop/khoroshi-diahramy) -* **ggplot2 book** by Hadley Wickham: [ggplot2-book.org](https://ggplot2-book.org/) - +- **Visualization Analysis and Design*- by Tamara Munzner: [taylorfrancis.com](https://www.taylorfrancis.com/books/mono/10.1201/b17511/visualization-analysis-design-tamara-munzner) +- **Fundamentals of Data Visualization*- by Claus O. Wilke: [clauswilke.com/dataviz](https://clauswilke.com/dataviz/) +- **Good Charts: The HBR Guide to Making Smarter, More Persuasive Data Visualizations** + - EN: [Amazon](https://www.amazon.com/dp/1633690709) +- **Good Charts Workbook: Tips, Tools, and Exercises for Making Better Data Visualizations** + - EN: [Amazon](https://www.amazon.com/dp/1633696170) + - Українською: [ArtHuss](https://www.arthuss.com.ua/shop/khoroshi-diahramy) +- **ggplot2 book*- by Hadley Wickham: [ggplot2-book.org](https://ggplot2-book.org/) ### Курси та навчальні програми -* **SDS 375 - Data Visualization in R** - by Claus O. Wilke: https://wilkelab.org/SDS375/ -* **Computing for Information Science** by Benjamin Soltoff: https://info5940.infosci.cornell.edu/ +- **SDS 375 - Data Visualization in R*- - by Claus O. Wilke: https://wilkelab.org/SDS375/ +- **Computing for Information Science*- by Benjamin Soltoff: https://info5940.infosci.cornell.edu/ ### Інше -* **A Layered Grammar of Graphics** by [Hadley Wickham](https://substack.com/@hadleywickham): [PDF](https://static.olehomelchenko.com/wickham_layered-grammar.pdf) \ No newline at end of file +- **A Layered Grammar of Graphics*- by [Hadley Wickham](https://substack.com/@hadleywickham): [PDF](https://static.olehomelchenko.com/wickham_layered-grammar.pdf) \ No newline at end of file diff --git a/content/posts/forbes-50-foundations.md b/content/posts/forbes-50-foundations.md new file mode 100644 index 0000000..21f3491 --- /dev/null +++ b/content/posts/forbes-50-foundations.md @@ -0,0 +1,925 @@ +--- +title: "Візуалізація: Топ-50 благодійних фондів за версією Forbes" +date: 2024-09-11 +draft: false +tags: + - Dataviz + - Showcase +languages: + - Vega-Lite + + +load_vega: true +--- + +В нещодавньому випуску український Forbes опублікував список топ-50 благодійних фондів України. + +Мені натрапилось фото сторінки в [твітері](https://x.com/Oleg_Karpen/status/1833792259608678626): + +{{< tweet user=Oleg_Karpen id=1833792259608678626 >}} + +Мене зацікавила візуалізація інформації, наданої в табличному форматі. + +## Список фондів за структурою надходжень + + +{{< vega-lite id="entso-e-dynamics" width=600 height=1000 >}} +{ + "$schema": "https://vega.github.io/schema/vega-lite/v5.json", + "config": { + "background": "#FFF", + "padding": { + "top": 30, + "right": 30, + "bottom": 30, + "left": 30 + }, + "title": { + "font": "Menlo, Lucida Console, Monospace", + "fontSize": 14, + "fontWeight": "normal", + "color": "#005", + "dy": -3, + "anchor": "middle", + "subtitleFont": "Menlo, Lucida Console, Monospace", + "subtitleColor": "#337", + "subtitlePadding": 5 + }, + "legend": { + "layout": { + "bottom": { + "anchor": "middle" + } + }, + "orient": "bottom", + "gradientLength": 500, + "labelLimit": 500, + "columns": 3, + "clipHeight": 15, + "rowPadding": 10, + "gridAlign": "none", + "labelFont": "Menlo, Lucida Console, Monospace", + "titleFont": "Menlo, Lucida Console, Monospace", + "titleFontWeight": "normal", + "titlePadding": 5, + "titleAlign": "center", + "titleAnchor": "middle", + "titleLimit": 500, + "titleColor": "#005" + }, + "text": { + "font": "Menlo, Lucida Console, Monospace", + "color": "#005" + }, + "axis": { + "labelFont": "Menlo, Lucida Console, Monospace", + "labelColor": "#005", + "titleFont": "Menlo, Lucida Console, Monospace", + "titleColor": "#337" + }, + }, + "width": 600, + "params": [ + { + "name": "org", + "select": {"type": "point", "fields": ["Джерело"]}, + "bind": { + "input": "select", + "options": [null, "Юрособи", "Фізособи", "Нерезиденти", "Інше"] + } + } + ], + "mark": {"type": "bar", "tooltip": true}, + "encoding": { + "y": {"field": "назва", "type": "nominal", "sort": "-x"}, + "x": {"aggregate": "sum", "field": "value", "type": "quantitative"}, + "color": { + "field": "Джерело", + "type": "nominal", + "sort": ["Юрособи", "Фізособи", "Нерезиденти", "Інше"], + "scale": { + "domain": ["Юрособи", "Фізособи", "Нерезиденти", "Інше"], + "range": ["#abc", "#4a4", "#a4a", "#ddd"] + } + } + }, + "transform": [ + {"calculate": "datum['дж_юр'] * datum['Зібрано'] / 100", "as": "Юрособи"}, + {"calculate": "datum['дж_фіз'] * datum['Зібрано'] / 100", "as": "Фізособи"}, + { + "calculate": "datum['дж_нерез'] * datum['Зібрано'] / 100", + "as": "Нерезиденти" + }, + {"calculate": "datum['дж_інш'] * datum['Зібрано'] / 100", "as": "Інше"}, + { + "fold": ["Юрособи", "Фізособи", "Нерезиденти", "Інше"], + "as": ["Джерело", "value"] + }, + {"filter": {"param": "org"}} + ], + "data": { + "values": [ + { + "назва": "Повернись Живим", + "тип": "Міл", + "Зібрано": 4678, + "дж_юр": 45, + "дж_фіз": 44, + "дж_нерез": 11, + "дж_інш": 0, + "адм": 1, + "витр_вій": 100, + "витр_фіз": 0, + "витр_інш_бф": 0, + "витр_інш": 0, + "доп_фізос": 0, + "доп_орган": 485 + }, + { + "назва": "Карітас", + "тип": "Гум", + "Зібрано": 3032, + "дж_юр": 0, + "дж_фіз": 0, + "дж_нерез": 100, + "дж_інш": 0, + "адм": 7, + "витр_вій": 0, + "витр_фіз": 46, + "витр_інш_бф": 54, + "витр_інш": 0, + "доп_фізос": 81581, + "доп_орган": 58 + }, + { + "назва": "100% Життя", + "тип": "Гум", + "Зібрано": 2647, + "дж_юр": 2, + "дж_фіз": 0, + "дж_нерез": 98, + "дж_інш": 0, + "адм": 1, + "витр_вій": 1, + "витр_фіз": 0, + "витр_інш_бф": 64, + "витр_інш": 35, + "доп_фізос": 8, + "доп_орган": 476 + }, + { + "назва": "Фонд Сергія Притули", + "тип": "Міл", + "Зібрано": 2146, + "дж_юр": 13, + "дж_фіз": 72, + "дж_нерез": 6, + "дж_інш": 9, + "адм": 1, + "витр_вій": 93, + "витр_фіз": 1, + "витр_інш_бф": 0, + "витр_інш": 5, + "доп_фізос": 37, + "доп_орган": 631 + }, + { + "назва": "KSE Foundation", + "тип": "Міл", + "Зібрано": 1696, + "дж_юр": 18, + "дж_фіз": 2, + "дж_нерез": 80, + "дж_інш": 0, + "адм": 2, + "витр_вій": 20, + "витр_фіз": 14, + "витр_інш_бф": 24, + "витр_інш": 42, + "доп_фізос": 591, + "доп_орган": 433 + }, + { + "назва": "AICM Україна", + "тип": "Гум", + "Зібрано": 1650, + "дж_юр": 0, + "дж_фіз": 0, + "дж_нерез": 100, + "дж_інш": 0, + "адм": 3, + "витр_вій": 0, + "витр_фіз": 20, + "витр_інш_бф": 0, + "витр_інш": 80, + "доп_фізос": 3000000, + "доп_орган": 1841 + }, + { + "назва": "Альянс громадського здоровʼя", + "тип": "Гум", + "Зібрано": 1520, + "дж_юр": 0, + "дж_фіз": 0, + "дж_нерез": 99, + "дж_інш": 1, + "адм": 11, + "витр_вій": 0, + "витр_фіз": 80, + "витр_інш_бф": 0, + "витр_інш": 20, + "доп_фізос": 474000, + "доп_орган": 177 + }, + { + "назва": "Razom for Ukraine", + "тип": "Гум", + "Зібрано": 1406, + "дж_юр": 2, + "дж_фіз": 0, + "дж_нерез": 98, + "дж_інш": 0, + "адм": 1, + "витр_вій": 41, + "витр_фіз": 0, + "витр_інш_бф": 34, + "витр_інш": 25, + "доп_фізос": 0, + "доп_орган": 1053 + }, + { + "назва": "До України з любовʼю", + "тип": "Гум", + "Зібрано": 1297, + "дж_юр": 0, + "дж_фіз": 0, + "дж_нерез": 100, + "дж_інш": 0, + "адм": 1, + "витр_вій": 0, + "витр_фіз": 98, + "витр_інш_бф": 1, + "витр_інш": 1, + "доп_фізос": 5500, + "доп_орган": 7 + }, + { + "назва": "Право на захист", + "тип": "Гум", + "Зібрано": 1286, + "дж_юр": 0, + "дж_фіз": 0, + "дж_нерез": 100, + "дж_інш": 0, + "адм": 30, + "витр_вій": 0, + "витр_фіз": 100, + "витр_інш_бф": 0, + "витр_інш": 0, + "доп_фізос": 1100000, + "доп_орган": 550 + }, + { + "назва": "Superhumans", + "тип": "Гум", + "Зібрано": 961, + "дж_юр": 16, + "дж_фіз": 7, + "дж_нерез": 8, + "дж_інш": 69, + "адм": 13, + "витр_вій": 0, + "витр_фіз": 0, + "витр_інш_бф": 0, + "витр_інш": 100, + "доп_фізос": null, + "доп_орган": 236 + }, + { + "назва": "Фонд Порошенка", + "тип": "Прив", + "Зібрано": 876, + "дж_юр": null, + "дж_фіз": null, + "дж_нерез": null, + "дж_інш": null, + "адм": 0, + "витр_вій": 100, + "витр_фіз": 0, + "витр_інш_бф": 0, + "витр_інш": 0, + "доп_фізос": 200, + "доп_орган": 287 + }, + { + "назва": "Адвентистське агентство допомоги і розвитку в Україні", + "тип": "Корп", + "Зібрано": 760, + "дж_юр": 0, + "дж_фіз": 0, + "дж_нерез": 100, + "дж_інш": 0, + "адм": 2, + "витр_вій": 0, + "витр_фіз": 99, + "витр_інш_бф": 1, + "витр_інш": 0, + "доп_фізос": 1167246, + "доп_орган": 74 + }, + { + "назва": "Відродження", + "тип": "Гум", + "Зібрано": 733, + "дж_юр": 0, + "дж_фіз": 0, + "дж_нерез": 100, + "дж_інш": 0, + "адм": 11, + "витр_вій": 0, + "витр_фіз": 0, + "витр_інш_бф": 0, + "витр_інш": 100, + "доп_фізос": null, + "доп_орган": 236 + }, + { + "назва": "СОС Дитячі Містечка", + "тип": "Гум", + "Зібрано": 722, + "дж_юр": 8, + "дж_фіз": 5, + "дж_нерез": 70, + "дж_інш": 17, + "адм": 25, + "витр_вій": 0, + "витр_фіз": 90, + "витр_інш_бф": 5, + "витр_інш": 5, + "доп_фізос": 272144, + "доп_орган": 25 + }, + { + "назва": "МХП - Громаді", + "тип": "Корп", + "Зібрано": 686, + "дж_юр": 98, + "дж_фіз": 2, + "дж_нерез": 0, + "дж_інш": 0, + "адм": 3, + "витр_вій": 61, + "витр_фіз": 0, + "витр_інш_бф": 12, + "витр_інш": 27, + "доп_фізос": 1803, + "доп_орган": 740 + }, + { + "назва": "Центр волонтерства та захисту", + "тип": "Гум", + "Зібрано": 669, + "дж_юр": 0, + "дж_фіз": 0, + "дж_нерез": 2, + "дж_інш": 98, + "адм": 3, + "витр_вій": 0, + "витр_фіз": 12, + "витр_інш_бф": 11, + "витр_інш": 77, + "доп_фізос": 33800, + "доп_орган": 651 + }, + { + "назва": "Збережи Україну!", + "тип": "Гум", + "Зібрано": 595, + "дж_юр": 82, + "дж_фіз": 2, + "дж_нерез": 16, + "дж_інш": 0, + "адм": 0, + "витр_вій": 57, + "витр_фіз": 3, + "витр_інш_бф": 4, + "витр_інш": 36, + "доп_фізос": 375, + "доп_орган": 2045 + }, + { + "назва": "Єврейський Хесед Бней Азріель", + "тип": "Гум", + "Зібрано": 583, + "дж_юр": 100, + "дж_фіз": 0, + "дж_нерез": 0, + "дж_інш": 0, + "адм": 4, + "витр_вій": 0, + "витр_фіз": 96, + "витр_інш_бф": 0, + "витр_інш": 4, + "доп_фізос": 6800, + "доп_орган": 9 + }, + { + "назва": "Янголи спасіння", + "тип": "Гум", + "Зібрано": 489, + "дж_юр": 5, + "дж_фіз": 1, + "дж_нерез": 94, + "дж_інш": 0, + "адм": 4, + "витр_вій": 0, + "витр_фіз": 96, + "витр_інш_бф": 0, + "витр_інш": 4, + "доп_фізос": 2870381, + "доп_орган": null + }, + { + "назва": "Фонд Віктора Пінчука", + "тип": "Прив", + "Зібрано": 454, + "дж_юр": 0, + "дж_фіз": 100, + "дж_нерез": 0, + "дж_інш": 0, + "адм": 3, + "витр_вій": 0, + "витр_фіз": 0, + "витр_інш_бф": 0, + "витр_інш": 100, + "доп_фізос": null, + "доп_орган": null + }, + { + "назва": "Рокада", + "тип": "Гум", + "Зібрано": 445, + "дж_юр": 0, + "дж_фіз": 0, + "дж_нерез": 100, + "дж_інш": 0, + "адм": 20, + "витр_вій": 0, + "витр_фіз": 100, + "витр_інш_бф": 0, + "витр_інш": 0, + "доп_фізос": 108500, + "доп_орган": null + }, + { + "назва": "Нціональна агенція ZDOROVI", + "тип": "Гум", + "Зібрано": 441, + "дж_юр": 26, + "дж_фіз": 0, + "дж_нерез": 74, + "дж_інш": 0, + "адм": 2, + "витр_вій": 0, + "витр_фіз": 0, + "витр_інш_бф": 15, + "витр_інш": 82, + "доп_фізос": 0, + "доп_орган": 630 + }, + { + "назва": "Посмішка ЮА", + "тип": "Гум", + "Зібрано": 435, + "дж_юр": 0, + "дж_фіз": 1, + "дж_нерез": 99, + "дж_інш": 0, + "адм": 2, + "витр_вій": 0, + "витр_фіз": 18, + "витр_інш_бф": 13, + "витр_інш": 69, + "доп_фізос": 1182753, + "доп_орган": 12 + }, + { + "назва": "Стабілізейшен Суппорт Сервісес", + "тип": "Гум", + "Зібрано": 384, + "дж_юр": 0, + "дж_фіз": 0, + "дж_нерез": 100, + "дж_інш": 0, + "адм": 13, + "витр_вій": 0, + "витр_фіз": 60, + "витр_інш_бф": 0, + "витр_інш": 40, + "доп_фізос": 250000, + "доп_орган": 848 + }, + { + "назва": "Мирне небо Харкова", + "тип": "Гум", + "Зібрано": 346, + "дж_юр": 1, + "дж_фіз": 2, + "дж_нерез": 97, + "дж_інш": 2, + "адм": 7, + "витр_вій": 0, + "витр_фіз": 100, + "витр_інш_бф": 0, + "витр_інш": 0, + "доп_фізос": null, + "доп_орган": null + }, + { + "назва": "Фундація Олени Зеленської", + "тип": "Гум", + "Зібрано": 334, + "дж_юр": 0, + "дж_фіз": 0, + "дж_нерез": 100, + "дж_інш": 0, + "адм": 7, + "витр_вій": 0, + "витр_фіз": 67, + "витр_інш_бф": 15, + "витр_інш": 18, + "доп_фізос": 600000, + "доп_орган": 15 + }, + { + "назва": "Корпорація монстрів", + "тип": "Міл", + "Зібрано": 332, + "дж_юр": 35, + "дж_фіз": 44, + "дж_нерез": 21, + "дж_інш": 0, + "адм": 1, + "витр_вій": 61, + "витр_фіз": 11, + "витр_інш_бф": 1, + "витр_інш": 27, + "доп_фізос": 3091, + "доп_орган": 267 + }, + { + "назва": "Діти Героїв", + "тип": "Гум", + "Зібрано": 330, + "дж_юр": 26, + "дж_фіз": 4, + "дж_нерез": 53, + "дж_інш": 17, + "адм": 9, + "витр_вій": 0, + "витр_фіз": 100, + "витр_інш_бф": 0, + "витр_інш": 0, + "доп_фізос": 7408, + "доп_орган": 0 + }, + { + "назва": "Загартовані серця", + "тип": "Корп", + "Зібрано": 325, + "дж_юр": 90, + "дж_фіз": 10, + "дж_нерез": 0, + "дж_інш": 0, + "адм": 0, + "витр_вій": 85, + "витр_фіз": 10, + "витр_інш_бф": 5, + "витр_інш": 0, + "доп_фізос": 300, + "доп_орган": 500 + }, + { + "назва": "Океан надій", + "тип": "Гум", + "Зібрано": 320, + "дж_юр": 0, + "дж_фіз": 0, + "дж_нерез": 100, + "дж_інш": 0, + "адм": 6, + "витр_вій": 7, + "витр_фіз": 15, + "витр_інш_бф": 56, + "витр_інш": 22, + "доп_фізос": 21, + "доп_орган": null + }, + { + "назва": "Фонд Ріната Ахметова", + "тип": "Прив", + "Зібрано": 314, + "дж_юр": 0, + "дж_фіз": 100, + "дж_нерез": 0, + "дж_інш": 0, + "адм": 7, + "витр_вій": 0, + "витр_фіз": 99, + "витр_інш_бф": 0, + "витр_інш": 1, + "доп_фізос": 1600000, + "доп_орган": 231 + }, + { + "назва": "Nova Ukraine", + "тип": "Гум", + "Зібрано": 310, + "дж_юр": 15, + "дж_фіз": 1, + "дж_нерез": 84, + "дж_інш": 0, + "адм": 8, + "витр_вій": 6, + "витр_фіз": 0, + "витр_інш_бф": 51, + "витр_інш": 43, + "доп_фізос": null, + "доп_орган": null + }, + { + "назва": "savED", + "тип": "Гум", + "Зібрано": 289, + "дж_юр": 26, + "дж_фіз": 6, + "дж_нерез": 68, + "дж_інш": 0, + "адм": 3, + "витр_вій": 0, + "витр_фіз": 0, + "витр_інш_бф": 0, + "витр_інш": 100, + "доп_фізос": 60000, + "доп_орган": 0 + }, + { + "назва": "KOLO", + "тип": "Міл", + "Зібрано": 274, + "дж_юр": 15, + "дж_фіз": 80, + "дж_нерез": 5, + "дж_інш": 0, + "адм": 1, + "витр_вій": 100, + "витр_фіз": 0, + "витр_інш_бф": 0, + "витр_інш": 0, + "доп_фізос": 0, + "доп_орган": 217 + }, + { + "назва": "Пацієнти України", + "тип": "Гум", + "Зібрано": 269, + "дж_юр": 13, + "дж_фіз": 0, + "дж_нерез": 87, + "дж_інш": 0, + "адм": 2, + "витр_вій": 8, + "витр_фіз": 0, + "витр_інш_бф": 3, + "витр_інш": 90, + "доп_фізос": 900000, + "доп_орган": 265 + }, + { + "назва": "Save Ukraine", + "тип": "Гум", + "Зібрано": 264, + "дж_юр": 0, + "дж_фіз": 1, + "дж_нерез": 99, + "дж_інш": 0, + "адм": 12, + "витр_вій": 0, + "витр_фіз": 90, + "витр_інш_бф": 5, + "витр_інш": 5, + "доп_фізос": null, + "доп_орган": 10 + }, + { + "назва": "АТБ", + "тип": "Корп", + "Зібрано": 231, + "дж_юр": 99.5, + "дж_фіз": 0.5, + "дж_нерез": 0, + "дж_інш": 0, + "адм": 1, + "витр_вій": 100, + "витр_фіз": 1, + "витр_інш_бф": 0, + "витр_інш": 0, + "доп_фізос": 30, + "доп_орган": 22 + }, + { + "назва": "Повір у себе", + "тип": "Корп", + "Зібрано": 228, + "дж_юр": 42, + "дж_фіз": 1, + "дж_нерез": 58, + "дж_інш": 0, + "адм": 3, + "витр_вій": 20, + "витр_фіз": 0, + "витр_інш_бф": 6, + "витр_інш": 73, + "доп_фізос": 185, + "доп_орган": 100 + }, + { + "назва": "Голоси дітей", + "тип": "Гум", + "Зібрано": 187, + "дж_юр": 3, + "дж_фіз": 4, + "дж_нерез": 93, + "дж_інш": 0, + "адм": 14, + "витр_вій": 0, + "витр_фіз": 100, + "витр_інш_бф": 0, + "витр_інш": 0, + "доп_фізос": 40642, + "доп_орган": 80 + }, + { + "назва": "Українська фундація громадського здоровʼя", + "тип": "Гум", + "Зібрано": 183, + "дж_юр": 0, + "дж_фіз": 0, + "дж_нерез": 100, + "дж_інш": 0, + "адм": 3, + "витр_вій": 0, + "витр_фіз": 100, + "витр_інш_бф": 0, + "витр_інш": 0, + "доп_фізос": 390000, + "доп_орган": 0 + }, + { + "назва": "Хартія", + "тип": "Міл", + "Зібрано": 181, + "дж_юр": 90, + "дж_фіз": 7, + "дж_нерез": 3, + "дж_інш": 0, + "адм": 0, + "витр_вій": 71, + "витр_фіз": 20, + "витр_інш_бф": 10, + "витр_інш": 0, + "доп_фізос": 165, + "доп_орган": 10 + }, + { + "назва": "Фонд Руслана Шостака", + "тип": "Прив", + "Зібрано": 179, + "дж_юр": 78, + "дж_фіз": 16, + "дж_нерез": 3, + "дж_інш": 2, + "адм": 3, + "витр_вій": 60, + "витр_фіз": 38, + "витр_інш_бф": 0, + "витр_інш": 3, + "доп_фізос": null, + "доп_орган": null + }, + { + "назва": "Українська федерація банків продовольства", + "тип": "Гум", + "Зібрано": 171, + "дж_юр": 1.2, + "дж_фіз": 0.3, + "дж_нерез": 98.5, + "дж_інш": 0, + "адм": 13, + "витр_вій": 0, + "витр_фіз": 0, + "витр_інш_бф": 63, + "витр_інш": 37, + "доп_фізос": 375315, + "доп_орган": 48 + }, + { + "назва": "Твоя опора", + "тип": "Гум", + "Зібрано": 165, + "дж_юр": 16, + "дж_фіз": 7, + "дж_нерез": 49, + "дж_інш": 28, + "адм": 6, + "витр_вій": 0, + "витр_фіз": 25, + "витр_інш_бф": 12, + "витр_інш": 62, + "доп_фізос": 81223, + "доп_орган": 107 + }, + { + "назва": "Незламні", + "тип": "Гум", + "Зібрано": 161, + "дж_юр": 22, + "дж_фіз": 1, + "дж_нерез": 57, + "дж_інш": 20, + "адм": 5, + "витр_вій": 0, + "витр_фіз": 0, + "витр_інш_бф": 0, + "витр_інш": 100, + "доп_фізос": 9000, + "доп_орган": 3 + }, + { + "назва": "Благомай", + "тип": "Гум", + "Зібрано": 160, + "дж_юр": 44, + "дж_фіз": 1, + "дж_нерез": 55, + "дж_інш": 0, + "адм": 6, + "витр_вій": 0, + "витр_фіз": 25, + "витр_інш_бф": 12, + "витр_інш": 62, + "доп_фізос": 9000, + "доп_орган": 3 + }, + { + "назва": "Таблеточки", + "тип": "Гум", + "Зібрано": 169, + "дж_юр": 16, + "дж_фіз": 39, + "дж_нерез": 43, + "дж_інш": 2, + "адм": 13, + "витр_вій": 0, + "витр_фіз": 61, + "витр_інш_бф": 0, + "витр_інш": 39, + "доп_фізос": 2000, + "доп_орган": 18 + }, + { + "назва": "BGV", + "тип": "Прив", + "Зібрано": 157, + "дж_юр": 38, + "дж_фіз": 27, + "дж_нерез": 35, + "дж_інш": 0, + "адм": 2, + "витр_вій": 46, + "витр_фіз": 32, + "витр_інш_бф": 9, + "витр_інш": 13, + "доп_фізос": 63976, + "доп_орган": 151 + }, + { + "назва": "Словʼянське серце", + "тип": "Гум", + "Зібрано": 147, + "дж_юр": 0, + "дж_фіз": 0, + "дж_нерез": 100, + "дж_інш": 0, + "адм": 9, + "витр_вій": 0, + "витр_фіз": 100, + "витр_інш_бф": 0, + "витр_інш": 0, + "доп_фізос": 20685, + "доп_орган": 0 + } + ] + } +} +{{< /vega-lite >}} diff --git a/content/posts/vega-altair-hugo-shortcodes.md b/content/posts/vega-altair-hugo-shortcodes.md new file mode 100644 index 0000000..8843a9b --- /dev/null +++ b/content/posts/vega-altair-hugo-shortcodes.md @@ -0,0 +1,145 @@ +--- +title: Додавання Vega-Lite візуалізацій в Hugo за допомогою Shortcodes +date: 2024-07-23 +draft: false +tags: + - Dataviz + - Hugo +languages: + - Altair + - Vega-Lite + - Hugo + +load_vega: true +--- + + +Код специфікації vega-lite, що треба додати: +```json + +{ + "$schema": "https://vega.github.io/schema/vega-lite/v5.json", + "description": "A simple bar chart with embedded data.", + "data": { + "values": [ + {"a": "A", "b": 28}, {"a": "B", "b": 55}, {"a": "C", "b": 43}, + {"a": "D", "b": 91}, {"a": "E", "b": 81}, {"a": "F", "b": 53}, + {"a": "G", "b": 19}, {"a": "H", "b": 87}, {"a": "I", "b": 52} + ] + }, + "mark": "bar", + "encoding": { + "x": {"field": "a", "title": "aoesuthaosth", "type": "nominal", "axis": {"labelAngle": 0}}, + "y": {"field": "b", "type": "quantitative"} + } +} + + +``` + + +Замість ручного додавання скриптів та ембеддингу як в [туторіалі](https://vega.github.io/vega-lite/usage/embed.html), є можливість підійти трохи гнучкіше і завантажувати vega-lite бібліотеки лише на тих сторінках на яких вони потрібні, а також параметризувати деякі із штук за замовчуванням: + + +```html + +
+ + +``` + + + +Використання (прибрати пробіл до/після `< >`, які я додав щоб воно не рендерилось): + + +``` +{{ < vega-lite id="unique-vis-id-1" actions="true"> }} +{ + "$schema": "https://vega.github.io/schema/vega-lite/v5.json", + "description": "A simple bar chart with embedded data.", + "data": { + "values": [ + {"a": "A", "b": 28}, {"a": "B", "b": 55}, {"a": "C", "b": 43}, + {"a": "D", "b": 91}, {"a": "E", "b": 81}, {"a": "F", "b": 53}, + {"a": "G", "b": 19}, {"a": "H", "b": 87}, {"a": "I", "b": 52} + ] + }, + "mark": "bar", + "width": 300, + "encoding": { + "x": {"field": "a", "title": "aoesuthaosth", "type": "nominal", "axis": {"labelAngle": 0}}, + "y": {"field": "b", "type": "quantitative"} + } +} +{{ < /vega-lite > }} +``` + +Результат: +{{< vega-lite id="unique-vis-id-1" >}} +{ + "$schema": "https://vega.github.io/schema/vega-lite/v5.json", + "description": "A simple bar chart with embedded data.", + "data": { + "values": [ + {"a": "A", "b": 28}, {"a": "B", "b": 55}, {"a": "C", "b": 43}, + {"a": "D", "b": 91}, {"a": "E", "b": 81}, {"a": "F", "b": 53}, + {"a": "G", "b": 19}, {"a": "H", "b": 87}, {"a": "I", "b": 52} + ] + }, + "mark": "bar", + "width": 300, + "encoding": { + "x": {"field": "a", "title": "aoesuthaosth", "type": "nominal", "axis": {"labelAngle": 0}}, + "y": {"field": "b", "type": "quantitative"} + } +} +{{< /vega-lite >}} + + +{{< vega-lite id="entso-e" dataUrl="https://github.com/olehomelchenko/ua-entso-e-transfers/raw/main/output.json">}} +{ + "$schema": "https://vega.github.io/schema/vega-lite/v5.json", + "description": "Daily import and export visualization", + "data": { + "url": "https://github.com/olehomelchenko/ua-entso-e-transfers/raw/main/output.json" + }, + "transform": [ + { "calculate": "0-datum.Export_from_UA", "as": "Export" }, + { "calculate": "datum.Import_to_UA", "as": "Import" } + ], + "width": 800, + "layer": [ + { + "mark": "bar", + "encoding": { + "x": { "field": "Date", "type": "temporal", "title": "Date", "timeUnit": "yearmonthdate" }, + "y": { "field": "Import", "type": "quantitative", "title": "MW", "aggregate": "sum" }, + "color": { "value": "blue" }, + "tooltip": [ + { "field": "Date", "type": "temporal", "title": "Date", "timeUnit": "yearmonthdate" }, + { "field": "Import", "type": "quantitative", "title": "Import to UA (MW)", "aggregate": "sum" } + ] + } + }, + { + "mark": "bar", + "encoding": { + "x": { "field": "Date", "type": "temporal" , "timeUnit": "yearmonthdate"}, + "y": { "field": "Export", "type": "quantitative", "aggregate": "sum" }, + "color": { "value": "red" }, + "tooltip": [ + { "field": "Date", "type": "temporal", "title": "Date", "timeUnit": "yearmonthdate" }, + { "field": "Export", "type": "quantitative", "title": "Export from UA (MW)", "aggregate": "sum" } + ] + } + } + ] +} +{{< /vega-lite >}} \ No newline at end of file diff --git a/content/til/_index.md b/content/til/_index.md new file mode 100644 index 0000000..e69de29 diff --git a/content/til/dataviz-blogs.md b/content/til/dataviz-blogs.md deleted file mode 100644 index 9375fb9..0000000 --- a/content/til/dataviz-blogs.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: Блоги та Ресурси з візуалізації даних -date: 2024-07-20 -draft: false ---- - -* https://datatowel.in.ua/ - демографія, економіка, електоральна географія України -* https://texty.org.ua/projects/ - журналістика даних українською -* https://observablehq.com/@ndrhzn - сторінка Андрія Газіна на Observable -* \ No newline at end of file diff --git a/content/til/obsidian-paperless.md b/content/til/obsidian-paperless.md new file mode 100644 index 0000000..36dcccc --- /dev/null +++ b/content/til/obsidian-paperless.md @@ -0,0 +1,12 @@ +--- +title: 'Obsidian Paperless' +date: 2024-07-28T02:03:30+03:00 +draft: false +--- + +Серія блогів + +https://jamierubin.net/blog-series/practically-paperless-with-obsidian/ + + +Obsidian для воркфлоу наукових досліджень: https://medium.com/@alexandraphelan/an-updated-academic-workflow-zotero-obsidian-cffef080addd \ No newline at end of file diff --git a/hugo.yaml b/hugo.yaml index 168f231..6f2b027 100644 --- a/hugo.yaml +++ b/hugo.yaml @@ -8,7 +8,7 @@ taxonomies: language: languages params: - disableThemeToggle: true + disableThemeToggle: false env: production author: Олег Омельченко diff --git a/layouts/partials/extend_head.html b/layouts/partials/extend_head.html index 92e6b72..8b75344 100644 --- a/layouts/partials/extend_head.html +++ b/layouts/partials/extend_head.html @@ -18,6 +18,10 @@ {{ end }}