Public
Edited
Nov 11, 2024
Insert cell
Insert cell
Insert cell
Insert cell
// Tree(new_income_tree, {
// label: d => `${d.data.code}: ${d.data.name}`,
// width: 1300,
// padding: 3,
// fill: d => color_scale(d.data.level),
// })
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
// Tree(program_tree, {
// label: d => d.data.code,
// fill: d => color_scale(d.data.level),
// width: 1152
// })
Insert cell
Tree(kkk_tree, {
label: d => `${d.data.code}: ${d.data.name}`,
width: 1000,
padding: 2,
fill: d => color_scale(d.data.level),
})
Insert cell
Tree(debt_tree, {
label: d => `${d.data.code}: ${d.data.name}`,
width: 1300,
padding: 3,
fill: d => color_scale(d.data.level),
})
Insert cell
Insert cell
color_scale = d3.scaleOrdinal()
.domain([0,1,2,3])
.range(["#5778a4", "#6a9f58", "#e7ca60", "#967662"])
Insert cell
debt_tree = d3.stratify()
.id((d) => d.code)
.parentId((d) => d.parentCode)
(debt_table)
Insert cell
debt_table = [
{code: 0, parentCode: null, name: "Видатки", level: 0},
...debt
.filter(d => d.endDate == null) // current categorisation
.map(d => ({code: +d.code, parentCode: +d.parentCode ?? 0, name: d.name, level: d.level}))
.sort((a,b) => a.code - b.code)
]
Insert cell
Insert cell
Insert cell
Insert cell
a = get_codes(income_table, [11010000])
Insert cell
Insert cell
new_income_tree = d3.hierarchy(
{
name: "root", code: 0,
children: [
{
name: "Tax revenues", code: 10000000,
children: [
{
name: "Personal income tax", code: 11010000,
children: get_codes(income_table, [11010000])
},
{
name: "Unified income tax", code: 18050000,
children: get_codes(income_table, [18050000])
},
{
name: "Other tax revenues", code: 100000001,
children: get_codes(income_table, [10000000], [11010000, 18050000])
}
]
},
{
name: "Non-tax revenues", code: 20000000,
children: get_codes(income_table, [20000000, 50000000], [21010500, 21010700, 21050000, 24110000])
},
{
name: "Capital revenues", code: 30000000,
children: get_codes(income_table, [30000000, 42000000, 21010500, 21010700, 21050000, 24110000])
},
{
name: "Transfers", code: 40000000,
children: get_codes(income_table, [40000000], [42000000])
}
]
}
)
Insert cell
income_tree = d3.stratify()
.id((d) => d.code)
.parentId((d) => d.parentCode)
(income_table)
Insert cell
economic_tree = d3.stratify()
.id((d) => d.code)
.parentId((d) => d.parentCode)
(economic_table)
Insert cell
functional_tree = d3.stratify()
.id((d) => d.code)
.parentId((d) => d.parentCode)
(functional_table)
Insert cell
program_tree = d3.stratify()
.id((d) => d.code)
.parentId((d) => d.parentCode)
(program_table)
Insert cell
Insert cell
income_table_mod = [
{code: 0, parentCode: 0, name: "Revenues"},
{code: 10000000, parentCode: 10, name: "Tax revenues"},
{code: 11010100, parentCode: 10000000, name: "Personal income tax"},
{code: 18050000, parentCode: 10000000, name: "Unified income tax"},
{code: -999, parentCode: 10000000, name: "Other tax revenues"},
{}
]
Insert cell
income_table = [
{code: 0, parentCode: "", name: "root", level: 0},
...inc
.filter(d => d.endDate == null) // current categorisation
.map(d => ({code: +d.code, parentCode: +d.parentCode ?? 0, name: d.name, level: d.level}))
.sort((a,b) => a.code - b.code)
]
Insert cell
economic_table = [
{code: "0000", parentCode: "", name: " Витрати", level: 0},
...kek
.filter(d => d.endDate == null) // current categorisation
.map(d => ({code: d.code, parentCode: d.parentCode ?? "0000", name: d.name, level: d.level}))
.sort((a,b) => a.code - b.code)
]
Insert cell
functional_table = [
{code: "0000", parentCode: "", name: " Витрати", level: 0},
...kfk
.filter(d => d.endDate == null) // current categorisation
.map(d => ({code: d.code, parentCode: d.parentCode ?? "0000", name: d.name, level: d.level}))
.sort((a,b) => a.code - b.code)
]
Insert cell
// Add a single root for the tree
program_table = [
{code: "0000", parentCode: "", name: "root", level: 0},
...tkpkmb
.filter(d => d.endDate == null) // current categorisation
.map(d => ({code: d.code, parentCode: d.parentCode ?? "0000", name: d.name, level: d.level}))
.sort((a,b) => a.code - b.code)
]
Insert cell
Insert cell
codeTable = {
// find all leaves of the selected subtree
let leaves = kfk_tree.descendants().find(d => d.id == selectCat.code).copy().leaves();

// compile a mapping between primary and relevant sub-category codes
return leaves.map(d => ({code: d.data.code, parentCode: d.ancestors().find(d => d.depth == 1).data.code}))
}
Insert cell
kfk_tree = d3.stratify()
.id((d) => d.code)
.parentId((d) => d.parentCode)
(kfk_table)
Insert cell
kfk_table = [
{code: 0, parentCode: null, name: "Видатки", level: 0},
...kfk
.filter(d => d.endDate == null) // current categorisation
.map(d => ({code: +d.code, parentCode: +d.parentCode ?? 0, name: d.name, level: d.level}))
.sort((a,b) => a.code - b.code)
]
Insert cell
debt = FileAttachment("DEBT.json").json()
Insert cell
kkk = FileAttachment("KKK.json").json()
Insert cell
kek = FileAttachment("KEK.json").json()
Insert cell
kfk = FileAttachment("KFK").json()
Insert cell
tkpkmb = FileAttachment("TKPKMB@1.json").json()
Insert cell
inc = FileAttachment("INC.json").json()
Insert cell
Insert cell
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more