Files
dataviz-portfolio/specs/candidates-per-vacancy.vl.json
2026-08-27 14:28:09 +03:00

2325 lines
47 KiB
JSON
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"$schema": "https://vega.github.io/schema/vega-lite/v5.json",
"description": "Candidates per vacancy (weekly ratio line) over dimmed monthly magnitude bars. Bars use a hidden 0-265k count scale (two-width overlap, bullet style); the ratio axis is the only visible axis. Data comes from the named source 'labor_market_weekly' (fields: week, candidates, vacancies) - rebind it at runtime or serve labor-market-weekly.json next to this file.",
"width": "container",
"height": 430,
"background": "#fcfcfb",
"padding": {
"left": 5,
"top": 5,
"right": 46,
"bottom": 5
},
"config": {
"font": "system-ui, -apple-system, 'Segoe UI', sans-serif",
"axis": {
"labelColor": "#898781",
"titleColor": "#52514e",
"gridColor": "#e1e0d9",
"gridWidth": 1,
"domainColor": "#c3c2b7",
"tickColor": "#c3c2b7",
"labelFontSize": 11,
"titleFontSize": 11.5,
"titleFontWeight": 500,
"titlePadding": 8
},
"legend": {
"labelColor": "#52514e",
"labelFontSize": 12,
"titleColor": "#52514e"
},
"line": {
"strokeWidth": 2,
"strokeCap": "round",
"strokeJoin": "round"
},
"view": {
"stroke": null
}
},
"data": {
"name": "labor_market_weekly",
"values": [
{
"week": "2020-03-23",
"candidates": 18321,
"vacancies": 4927
},
{
"week": "2020-03-30",
"candidates": 18936,
"vacancies": 4216
},
{
"week": "2020-04-06",
"candidates": 18705,
"vacancies": 4570
},
{
"week": "2020-04-13",
"candidates": 19150,
"vacancies": 4920
},
{
"week": "2020-04-20",
"candidates": 19574,
"vacancies": 5125
},
{
"week": "2020-04-27",
"candidates": 19880,
"vacancies": 5183
},
{
"week": "2020-05-04",
"candidates": 20230,
"vacancies": 5286
},
{
"week": "2020-05-11",
"candidates": 20462,
"vacancies": 5115
},
{
"week": "2020-05-18",
"candidates": 20822,
"vacancies": 5432
},
{
"week": "2020-05-25",
"candidates": 21131,
"vacancies": 5615
},
{
"week": "2020-06-01",
"candidates": 21269,
"vacancies": 5823
},
{
"week": "2020-06-08",
"candidates": 21384,
"vacancies": 6084
},
{
"week": "2020-06-15",
"candidates": 20960,
"vacancies": 6318
},
{
"week": "2020-06-22",
"candidates": 21284,
"vacancies": 6454
},
{
"week": "2020-06-29",
"candidates": 21442,
"vacancies": 6540
},
{
"week": "2020-07-06",
"candidates": 21745,
"vacancies": 7019
},
{
"week": "2020-07-13",
"candidates": 21591,
"vacancies": 7046
},
{
"week": "2020-07-20",
"candidates": 21547,
"vacancies": 7284
},
{
"week": "2020-07-27",
"candidates": 21411,
"vacancies": 7514
},
{
"week": "2020-08-03",
"candidates": 21334,
"vacancies": 7458
},
{
"week": "2020-08-10",
"candidates": 21163,
"vacancies": 7676
},
{
"week": "2020-08-17",
"candidates": 20927,
"vacancies": 7879
},
{
"week": "2020-08-24",
"candidates": 20969,
"vacancies": 8012
},
{
"week": "2020-08-31",
"candidates": 20287,
"vacancies": 8569
},
{
"week": "2020-09-07",
"candidates": 20154,
"vacancies": 9989
},
{
"week": "2020-09-14",
"candidates": 20204,
"vacancies": 9543
},
{
"week": "2020-09-21",
"candidates": 20075,
"vacancies": 10058
},
{
"week": "2020-09-28",
"candidates": 20124,
"vacancies": 10135
},
{
"week": "2020-10-05",
"candidates": 19927,
"vacancies": 10778
},
{
"week": "2020-10-12",
"candidates": 19549,
"vacancies": 10726
},
{
"week": "2020-10-19",
"candidates": 19296,
"vacancies": 11426
},
{
"week": "2020-10-26",
"candidates": 19142,
"vacancies": 12008
},
{
"week": "2020-11-02",
"candidates": 18905,
"vacancies": 12300
},
{
"week": "2020-11-09",
"candidates": 18518,
"vacancies": 13124
},
{
"week": "2020-11-16",
"candidates": 18248,
"vacancies": 13225
},
{
"week": "2020-11-23",
"candidates": 18170,
"vacancies": 13413
},
{
"week": "2020-11-30",
"candidates": 17800,
"vacancies": 14061
},
{
"week": "2020-12-07",
"candidates": 17393,
"vacancies": 13939
},
{
"week": "2020-12-14",
"candidates": 16901,
"vacancies": 14221
},
{
"week": "2020-12-21",
"candidates": 16375,
"vacancies": 13573
},
{
"week": "2020-12-28",
"candidates": 15702,
"vacancies": 12037
},
{
"week": "2021-01-04",
"candidates": 16357,
"vacancies": 11888
},
{
"week": "2021-01-11",
"candidates": 16971,
"vacancies": 14127
},
{
"week": "2021-01-18",
"candidates": 16944,
"vacancies": 15651
},
{
"week": "2021-01-25",
"candidates": 16905,
"vacancies": 17219
},
{
"week": "2021-02-01",
"candidates": 17022,
"vacancies": 18082
},
{
"week": "2021-02-08",
"candidates": 16804,
"vacancies": 17414
},
{
"week": "2021-02-15",
"candidates": 16699,
"vacancies": 17930
},
{
"week": "2021-02-22",
"candidates": 16673,
"vacancies": 18450
},
{
"week": "2021-03-01",
"candidates": 16775,
"vacancies": 18923
},
{
"week": "2021-03-08",
"candidates": 16825,
"vacancies": 18875
},
{
"week": "2021-03-15",
"candidates": 16885,
"vacancies": 19080
},
{
"week": "2021-03-22",
"candidates": 16567,
"vacancies": 19506
},
{
"week": "2021-03-29",
"candidates": 16223,
"vacancies": 19997
},
{
"week": "2021-04-05",
"candidates": 16246,
"vacancies": 20362
},
{
"week": "2021-04-12",
"candidates": 16122,
"vacancies": 20432
},
{
"week": "2021-04-19",
"candidates": 15942,
"vacancies": 20416
},
{
"week": "2021-04-26",
"candidates": 15497,
"vacancies": 20627
},
{
"week": "2021-05-03",
"candidates": 14889,
"vacancies": 19656
},
{
"week": "2021-05-10",
"candidates": 15151,
"vacancies": 20128
},
{
"week": "2021-05-17",
"candidates": 16148,
"vacancies": 21201
},
{
"week": "2021-05-24",
"candidates": 16193,
"vacancies": 21607
},
{
"week": "2021-05-31",
"candidates": 16156,
"vacancies": 22631
},
{
"week": "2021-06-07",
"candidates": 15451,
"vacancies": 22309
},
{
"week": "2021-06-14",
"candidates": 15428,
"vacancies": 22282
},
{
"week": "2021-06-21",
"candidates": 15412,
"vacancies": 21494
},
{
"week": "2021-06-28",
"candidates": 15695,
"vacancies": 21985
},
{
"week": "2021-07-05",
"candidates": 16249,
"vacancies": 22585
},
{
"week": "2021-07-12",
"candidates": 16194,
"vacancies": 22658
},
{
"week": "2021-07-19",
"candidates": 16308,
"vacancies": 23064
},
{
"week": "2021-07-26",
"candidates": 16498,
"vacancies": 23514
},
{
"week": "2021-08-02",
"candidates": 16624,
"vacancies": 23782
},
{
"week": "2021-08-09",
"candidates": 16849,
"vacancies": 23946
},
{
"week": "2021-08-16",
"candidates": 17889,
"vacancies": 24445
},
{
"week": "2021-08-23",
"candidates": 20236,
"vacancies": 24039
},
{
"week": "2021-08-30",
"candidates": 21681,
"vacancies": 24118
},
{
"week": "2021-09-06",
"candidates": 23552,
"vacancies": 24361
},
{
"week": "2021-09-13",
"candidates": 24580,
"vacancies": 24421
},
{
"week": "2021-09-20",
"candidates": 25674,
"vacancies": 25083
},
{
"week": "2021-09-27",
"candidates": 26343,
"vacancies": 25163
},
{
"week": "2021-10-04",
"candidates": 27086,
"vacancies": 25324
},
{
"week": "2021-10-11",
"candidates": 27343,
"vacancies": 24537
},
{
"week": "2021-10-18",
"candidates": 28320,
"vacancies": 25634
},
{
"week": "2021-10-25",
"candidates": 28628,
"vacancies": 25825
},
{
"week": "2021-11-01",
"candidates": 29271,
"vacancies": 26318
},
{
"week": "2021-11-08",
"candidates": 29852,
"vacancies": 27431
},
{
"week": "2021-11-15",
"candidates": 30343,
"vacancies": 26802
},
{
"week": "2021-11-22",
"candidates": 30461,
"vacancies": 26745
},
{
"week": "2021-11-29",
"candidates": 30839,
"vacancies": 26571
},
{
"week": "2021-12-06",
"candidates": 31216,
"vacancies": 26701
},
{
"week": "2021-12-13",
"candidates": 31331,
"vacancies": 26377
},
{
"week": "2021-12-20",
"candidates": 31279,
"vacancies": 25244
},
{
"week": "2021-12-27",
"candidates": 30962,
"vacancies": 22121
},
{
"week": "2022-01-03",
"candidates": 31931,
"vacancies": 20319
},
{
"week": "2022-01-10",
"candidates": 33143,
"vacancies": 23622
},
{
"week": "2022-01-17",
"candidates": 34226,
"vacancies": 25758
},
{
"week": "2022-01-24",
"candidates": 35036,
"vacancies": 28009
},
{
"week": "2022-01-31",
"candidates": 35917,
"vacancies": 28965
},
{
"week": "2022-02-07",
"candidates": 36750,
"vacancies": 27448
},
{
"week": "2022-02-14",
"candidates": 36984,
"vacancies": 27009
},
{
"week": "2022-02-21",
"candidates": 36567,
"vacancies": 24824
},
{
"week": "2022-02-28",
"candidates": 33898,
"vacancies": 19653
},
{
"week": "2022-03-07",
"candidates": 36069,
"vacancies": 15596
},
{
"week": "2022-03-14",
"candidates": 37879,
"vacancies": 10408
},
{
"week": "2022-03-21",
"candidates": 39458,
"vacancies": 13950
},
{
"week": "2022-03-28",
"candidates": 40871,
"vacancies": 15442
},
{
"week": "2022-04-04",
"candidates": 42007,
"vacancies": 15910
},
{
"week": "2022-04-11",
"candidates": 42881,
"vacancies": 14670
},
{
"week": "2022-04-18",
"candidates": 43676,
"vacancies": 14934
},
{
"week": "2022-04-25",
"candidates": 44448,
"vacancies": 15054
},
{
"week": "2022-05-02",
"candidates": 45370,
"vacancies": 15411
},
{
"week": "2022-05-09",
"candidates": 46237,
"vacancies": 15574
},
{
"week": "2022-05-16",
"candidates": 47388,
"vacancies": 15289
},
{
"week": "2022-05-23",
"candidates": 47848,
"vacancies": 15319
},
{
"week": "2022-05-30",
"candidates": 49400,
"vacancies": 15342
},
{
"week": "2022-06-06",
"candidates": 50276,
"vacancies": 15160
},
{
"week": "2022-06-13",
"candidates": 51203,
"vacancies": 14726
},
{
"week": "2022-06-20",
"candidates": 52334,
"vacancies": 14720
},
{
"week": "2022-06-27",
"candidates": 53209,
"vacancies": 14336
},
{
"week": "2022-07-04",
"candidates": 54315,
"vacancies": 14137
},
{
"week": "2022-07-11",
"candidates": 55196,
"vacancies": 13739
},
{
"week": "2022-07-18",
"candidates": 56175,
"vacancies": 13557
},
{
"week": "2022-07-25",
"candidates": 57136,
"vacancies": 13490
},
{
"week": "2022-08-01",
"candidates": 58140,
"vacancies": 13490
},
{
"week": "2022-08-08",
"candidates": 59030,
"vacancies": 13197
},
{
"week": "2022-08-15",
"candidates": 59802,
"vacancies": 13159
},
{
"week": "2022-08-22",
"candidates": 60408,
"vacancies": 12709
},
{
"week": "2022-08-29",
"candidates": 61258,
"vacancies": 12561
},
{
"week": "2022-09-05",
"candidates": 62400,
"vacancies": 12901
},
{
"week": "2022-09-12",
"candidates": 63054,
"vacancies": 13097
},
{
"week": "2022-09-19",
"candidates": 63660,
"vacancies": 13572
},
{
"week": "2022-09-26",
"candidates": 64382,
"vacancies": 13360
},
{
"week": "2022-10-03",
"candidates": 65206,
"vacancies": 13355
},
{
"week": "2022-10-10",
"candidates": 65633,
"vacancies": 13007
},
{
"week": "2022-10-17",
"candidates": 66511,
"vacancies": 12987
},
{
"week": "2022-10-24",
"candidates": 67194,
"vacancies": 12881
},
{
"week": "2022-10-31",
"candidates": 69151,
"vacancies": 12483
},
{
"week": "2022-11-07",
"candidates": 70213,
"vacancies": 12377
},
{
"week": "2022-11-14",
"candidates": 70973,
"vacancies": 11845
},
{
"week": "2022-11-21",
"candidates": 71476,
"vacancies": 11507
},
{
"week": "2022-11-28",
"candidates": 72578,
"vacancies": 11097
},
{
"week": "2022-12-05",
"candidates": 73921,
"vacancies": 10632
},
{
"week": "2022-12-12",
"candidates": 75211,
"vacancies": 10091
},
{
"week": "2022-12-19",
"candidates": 76011,
"vacancies": 9682
},
{
"week": "2022-12-26",
"candidates": 76488,
"vacancies": 8727
},
{
"week": "2023-01-02",
"candidates": 78485,
"vacancies": 8300
},
{
"week": "2023-01-09",
"candidates": 80623,
"vacancies": 8791
},
{
"week": "2023-01-16",
"candidates": 82525,
"vacancies": 9300
},
{
"week": "2023-01-23",
"candidates": 84187,
"vacancies": 9874
},
{
"week": "2023-01-30",
"candidates": 71123,
"vacancies": 9905
},
{
"week": "2023-02-06",
"candidates": 72302,
"vacancies": 9623
},
{
"week": "2023-02-13",
"candidates": 74007,
"vacancies": 9644
},
{
"week": "2023-02-20",
"candidates": 75377,
"vacancies": 9575
},
{
"week": "2023-02-27",
"candidates": 76634,
"vacancies": 9536
},
{
"week": "2023-03-06",
"candidates": 77995,
"vacancies": 9489
},
{
"week": "2023-03-13",
"candidates": 79206,
"vacancies": 9466
},
{
"week": "2023-03-20",
"candidates": 80236,
"vacancies": 9478
},
{
"week": "2023-03-27",
"candidates": 81489,
"vacancies": 9483
},
{
"week": "2023-04-03",
"candidates": 82405,
"vacancies": 9573
},
{
"week": "2023-04-10",
"candidates": 82725,
"vacancies": 9327
},
{
"week": "2023-04-17",
"candidates": 83114,
"vacancies": 9285
},
{
"week": "2023-04-24",
"candidates": 83908,
"vacancies": 9335
},
{
"week": "2023-05-01",
"candidates": 84029,
"vacancies": 9469
},
{
"week": "2023-05-08",
"candidates": 84773,
"vacancies": 9438
},
{
"week": "2023-05-15",
"candidates": 84886,
"vacancies": 9682
},
{
"week": "2023-05-22",
"candidates": 85350,
"vacancies": 9500
},
{
"week": "2023-05-29",
"candidates": 85642,
"vacancies": 9523
},
{
"week": "2023-06-05",
"candidates": 86030,
"vacancies": 9236
},
{
"week": "2023-06-12",
"candidates": 86598,
"vacancies": 9343
},
{
"week": "2023-06-19",
"candidates": 87038,
"vacancies": 9364
},
{
"week": "2023-06-26",
"candidates": 87600,
"vacancies": 9236
},
{
"week": "2023-07-03",
"candidates": 88361,
"vacancies": 9471
},
{
"week": "2023-07-10",
"candidates": 89268,
"vacancies": 9283
},
{
"week": "2023-07-17",
"candidates": 89760,
"vacancies": 9223
},
{
"week": "2023-07-24",
"candidates": 89946,
"vacancies": 9219
},
{
"week": "2023-07-31",
"candidates": 90477,
"vacancies": 8117
},
{
"week": "2023-08-07",
"candidates": 91008,
"vacancies": 7600
},
{
"week": "2023-08-14",
"candidates": 91338,
"vacancies": 7092
},
{
"week": "2023-08-21",
"candidates": 91164,
"vacancies": 6653
},
{
"week": "2023-08-28",
"candidates": 91360,
"vacancies": 6774
},
{
"week": "2023-09-04",
"candidates": 91495,
"vacancies": 6879
},
{
"week": "2023-09-11",
"candidates": 91959,
"vacancies": 6761
},
{
"week": "2023-09-18",
"candidates": 92184,
"vacancies": 7075
},
{
"week": "2023-09-25",
"candidates": 92326,
"vacancies": 6952
},
{
"week": "2023-10-02",
"candidates": 91820,
"vacancies": 7008
},
{
"week": "2023-10-09",
"candidates": 91720,
"vacancies": 7052
},
{
"week": "2023-10-16",
"candidates": 91718,
"vacancies": 7061
},
{
"week": "2023-10-23",
"candidates": 92155,
"vacancies": 6999
},
{
"week": "2023-10-30",
"candidates": 92129,
"vacancies": 6888
},
{
"week": "2023-11-06",
"candidates": 92547,
"vacancies": 6852
},
{
"week": "2023-11-13",
"candidates": 92533,
"vacancies": 6941
},
{
"week": "2023-11-20",
"candidates": 92696,
"vacancies": 6935
},
{
"week": "2023-11-27",
"candidates": 92698,
"vacancies": 6915
},
{
"week": "2023-12-04",
"candidates": 92422,
"vacancies": 6795
},
{
"week": "2023-12-11",
"candidates": 91568,
"vacancies": 6685
},
{
"week": "2023-12-18",
"candidates": 90801,
"vacancies": 6367
},
{
"week": "2023-12-25",
"candidates": 89337,
"vacancies": 5701
},
{
"week": "2024-01-01",
"candidates": 89594,
"vacancies": 5716
},
{
"week": "2024-01-08",
"candidates": 90414,
"vacancies": 6142
},
{
"week": "2024-01-15",
"candidates": 90746,
"vacancies": 6577
},
{
"week": "2024-01-22",
"candidates": 90327,
"vacancies": 6939
},
{
"week": "2024-01-29",
"candidates": 90200,
"vacancies": 6983
},
{
"week": "2024-02-05",
"candidates": 90189,
"vacancies": 6852
},
{
"week": "2024-02-12",
"candidates": 89834,
"vacancies": 6900
},
{
"week": "2024-02-19",
"candidates": 89650,
"vacancies": 7200
},
{
"week": "2024-02-26",
"candidates": 89809,
"vacancies": 7512
},
{
"week": "2024-03-04",
"candidates": 89681,
"vacancies": 7523
},
{
"week": "2024-03-11",
"candidates": 90170,
"vacancies": 6752
},
{
"week": "2024-03-18",
"candidates": 90291,
"vacancies": 7074
},
{
"week": "2024-03-25",
"candidates": 90293,
"vacancies": 7305
},
{
"week": "2024-04-01",
"candidates": 90411,
"vacancies": 7424
},
{
"week": "2024-04-08",
"candidates": 90017,
"vacancies": 7468
},
{
"week": "2024-04-15",
"candidates": 89761,
"vacancies": 7461
},
{
"week": "2024-04-22",
"candidates": 89117,
"vacancies": 7214
},
{
"week": "2024-04-29",
"candidates": 88531,
"vacancies": 7288
},
{
"week": "2024-05-06",
"candidates": 88303,
"vacancies": 7187
},
{
"week": "2024-05-13",
"candidates": 87963,
"vacancies": 7054
},
{
"week": "2024-05-20",
"candidates": 87541,
"vacancies": 7189
},
{
"week": "2024-05-27",
"candidates": 87180,
"vacancies": 7211
},
{
"week": "2024-06-03",
"candidates": 86782,
"vacancies": 7277
},
{
"week": "2024-06-10",
"candidates": 86785,
"vacancies": 7232
},
{
"week": "2024-06-17",
"candidates": 86265,
"vacancies": 7159
},
{
"week": "2024-06-24",
"candidates": 86183,
"vacancies": 6958
},
{
"week": "2024-07-01",
"candidates": 86120,
"vacancies": 7280
},
{
"week": "2024-07-08",
"candidates": 86067,
"vacancies": 7269
},
{
"week": "2024-07-15",
"candidates": 85534,
"vacancies": 7279
},
{
"week": "2024-07-22",
"candidates": 85656,
"vacancies": 7352
},
{
"week": "2024-07-29",
"candidates": 85788,
"vacancies": 7396
},
{
"week": "2024-08-05",
"candidates": 85888,
"vacancies": 7507
},
{
"week": "2024-08-12",
"candidates": 85544,
"vacancies": 7549
},
{
"week": "2024-08-19",
"candidates": 85074,
"vacancies": 7357
},
{
"week": "2024-08-26",
"candidates": 84826,
"vacancies": 7030
},
{
"week": "2024-09-02",
"candidates": 85171,
"vacancies": 7208
},
{
"week": "2024-09-09",
"candidates": 85444,
"vacancies": 7447
},
{
"week": "2024-09-16",
"candidates": 85150,
"vacancies": 7401
},
{
"week": "2024-09-23",
"candidates": 85166,
"vacancies": 7427
},
{
"week": "2024-09-30",
"candidates": 84683,
"vacancies": 7226
},
{
"week": "2024-10-07",
"candidates": 84641,
"vacancies": 7348
},
{
"week": "2024-10-14",
"candidates": 84640,
"vacancies": 7494
},
{
"week": "2024-10-21",
"candidates": 83925,
"vacancies": 7406
},
{
"week": "2024-10-28",
"candidates": 83615,
"vacancies": 7367
},
{
"week": "2024-11-04",
"candidates": 83532,
"vacancies": 7365
},
{
"week": "2024-11-11",
"candidates": 83010,
"vacancies": 7425
},
{
"week": "2024-11-18",
"candidates": 82605,
"vacancies": 7574
},
{
"week": "2024-11-25",
"candidates": 82003,
"vacancies": 7586
},
{
"week": "2024-12-02",
"candidates": 81870,
"vacancies": 7382
},
{
"week": "2024-12-09",
"candidates": 81385,
"vacancies": 7426
},
{
"week": "2024-12-16",
"candidates": 80443,
"vacancies": 7142
},
{
"week": "2024-12-23",
"candidates": 78891,
"vacancies": 6456
},
{
"week": "2024-12-30",
"candidates": 78567,
"vacancies": 5942
},
{
"week": "2025-01-06",
"candidates": 80219,
"vacancies": 6350
},
{
"week": "2025-01-13",
"candidates": 80558,
"vacancies": 6794
},
{
"week": "2025-01-20",
"candidates": 80995,
"vacancies": 7339
},
{
"week": "2025-01-27",
"candidates": 81569,
"vacancies": 7983
},
{
"week": "2025-02-03",
"candidates": 82141,
"vacancies": 7676
},
{
"week": "2025-02-10",
"candidates": 82541,
"vacancies": 7917
},
{
"week": "2025-02-17",
"candidates": 82792,
"vacancies": 7964
},
{
"week": "2025-02-24",
"candidates": 82603,
"vacancies": 8232
},
{
"week": "2025-03-03",
"candidates": 82417,
"vacancies": 8008
},
{
"week": "2025-03-10",
"candidates": 82824,
"vacancies": 7959
},
{
"week": "2025-03-17",
"candidates": 82681,
"vacancies": 7957
},
{
"week": "2025-03-24",
"candidates": 83243,
"vacancies": 8007
},
{
"week": "2025-03-31",
"candidates": 83774,
"vacancies": 8065
},
{
"week": "2025-04-07",
"candidates": 84178,
"vacancies": 8059
},
{
"week": "2025-04-14",
"candidates": 83783,
"vacancies": 7970
},
{
"week": "2025-04-21",
"candidates": 83588,
"vacancies": 7984
},
{
"week": "2025-04-28",
"candidates": 83286,
"vacancies": 7926
},
{
"week": "2025-05-05",
"candidates": 83755,
"vacancies": 7978
},
{
"week": "2025-05-12",
"candidates": 83849,
"vacancies": 8028
},
{
"week": "2025-05-19",
"candidates": 83707,
"vacancies": 8265
},
{
"week": "2025-05-26",
"candidates": 83643,
"vacancies": 8389
},
{
"week": "2025-06-02",
"candidates": 83385,
"vacancies": 8387
},
{
"week": "2025-06-09",
"candidates": 83215,
"vacancies": 8357
},
{
"week": "2025-06-16",
"candidates": 83214,
"vacancies": 8319
},
{
"week": "2025-06-23",
"candidates": 83042,
"vacancies": 8135
},
{
"week": "2025-06-30",
"candidates": 83784,
"vacancies": 8211
},
{
"week": "2025-07-07",
"candidates": 83907,
"vacancies": 8471
},
{
"week": "2025-07-14",
"candidates": 83825,
"vacancies": 8653
},
{
"week": "2025-07-21",
"candidates": 83530,
"vacancies": 8826
},
{
"week": "2025-07-28",
"candidates": 83797,
"vacancies": 8773
},
{
"week": "2025-08-04",
"candidates": 83770,
"vacancies": 8816
},
{
"week": "2025-08-11",
"candidates": 83567,
"vacancies": 8877
},
{
"week": "2025-08-18",
"candidates": 83423,
"vacancies": 9092
},
{
"week": "2025-08-25",
"candidates": 83605,
"vacancies": 8978
},
{
"week": "2025-09-01",
"candidates": 84643,
"vacancies": 9020
},
{
"week": "2025-09-08",
"candidates": 84728,
"vacancies": 9021
},
{
"week": "2025-09-15",
"candidates": 84619,
"vacancies": 9193
},
{
"week": "2025-09-22",
"candidates": 84709,
"vacancies": 9362
},
{
"week": "2025-09-29",
"candidates": 84630,
"vacancies": 9312
},
{
"week": "2025-10-06",
"candidates": 84628,
"vacancies": 9444
},
{
"week": "2025-10-13",
"candidates": 84270,
"vacancies": 9508
},
{
"week": "2025-10-20",
"candidates": 84020,
"vacancies": 9462
},
{
"week": "2025-10-27",
"candidates": 83650,
"vacancies": 9505
},
{
"week": "2025-11-03",
"candidates": 83579,
"vacancies": 9602
},
{
"week": "2025-11-10",
"candidates": 83087,
"vacancies": 9648
},
{
"week": "2025-11-17",
"candidates": 82749,
"vacancies": 9624
},
{
"week": "2025-11-24",
"candidates": 82221,
"vacancies": 9636
},
{
"week": "2025-12-01",
"candidates": 82066,
"vacancies": 9421
},
{
"week": "2025-12-08",
"candidates": 81693,
"vacancies": 9420
},
{
"week": "2025-12-15",
"candidates": 81040,
"vacancies": 9106
},
{
"week": "2025-12-22",
"candidates": 79990,
"vacancies": 8285
},
{
"week": "2025-12-29",
"candidates": 79528,
"vacancies": 7440
},
{
"week": "2026-01-05",
"candidates": 81278,
"vacancies": 8218
},
{
"week": "2026-01-12",
"candidates": 81498,
"vacancies": 8557
},
{
"week": "2026-01-19",
"candidates": 82168,
"vacancies": 9304
},
{
"week": "2026-01-26",
"candidates": 82439,
"vacancies": 10010
},
{
"week": "2026-02-02",
"candidates": 83010,
"vacancies": 9587
},
{
"week": "2026-02-09",
"candidates": 83210,
"vacancies": 9604
},
{
"week": "2026-02-16",
"candidates": 83714,
"vacancies": 9601
},
{
"week": "2026-02-23",
"candidates": 83700,
"vacancies": 9548
},
{
"week": "2026-03-02",
"candidates": 83984,
"vacancies": 9474
},
{
"week": "2026-03-09",
"candidates": 84308,
"vacancies": 9355
},
{
"week": "2026-03-16",
"candidates": 84621,
"vacancies": 9260
},
{
"week": "2026-03-23",
"candidates": 85119,
"vacancies": 9127
},
{
"week": "2026-03-30",
"candidates": 86013,
"vacancies": 8762
},
{
"week": "2026-04-06",
"candidates": 86339,
"vacancies": 8610
},
{
"week": "2026-04-13",
"candidates": 86366,
"vacancies": 8221
},
{
"week": "2026-04-20",
"candidates": 86790,
"vacancies": 7825
},
{
"week": "2026-04-27",
"candidates": 86898,
"vacancies": 7785
},
{
"week": "2026-05-04",
"candidates": 87141,
"vacancies": 7834
},
{
"week": "2026-05-11",
"candidates": 87614,
"vacancies": 8118
},
{
"week": "2026-05-18",
"candidates": 87658,
"vacancies": 8149
},
{
"week": "2026-05-25",
"candidates": 88061,
"vacancies": 8173
},
{
"week": "2026-06-01",
"candidates": 88405,
"vacancies": 7946
},
{
"week": "2026-06-08",
"candidates": 88971,
"vacancies": 7901
},
{
"week": "2026-06-15",
"candidates": 88786,
"vacancies": 7755
},
{
"week": "2026-06-22",
"candidates": 89092,
"vacancies": 7572
},
{
"week": "2026-06-29",
"candidates": 89343,
"vacancies": 7248
},
{
"week": "2026-07-06",
"candidates": 89844,
"vacancies": 7155
},
{
"week": "2026-07-13",
"candidates": 89944,
"vacancies": 7093
},
{
"week": "2026-07-20",
"candidates": 90361,
"vacancies": 6980
},
{
"week": "2026-07-27",
"candidates": 90448,
"vacancies": 7249
}
]
},
"transform": [
{
"calculate": "datum.candidates / datum.vacancies",
"as": "ratio"
}
],
"resolve": {
"scale": {
"y": "independent"
}
},
"layer": [
{
"description": "Wide pale bars: monthly mean candidates (hidden count scale)",
"mark": {
"type": "bar",
"width": {
"band": 0.72
},
"opacity": 0.15
},
"encoding": {
"x": {
"field": "week",
"timeUnit": "yearmonth",
"type": "temporal",
"bandPosition": 0.5,
"title": null,
"axis": {
"grid": false,
"format": "%Y",
"tickCount": "year",
"labelFontSize": 11
}
},
"y": {
"aggregate": "mean",
"field": "candidates",
"type": "quantitative",
"scale": {
"domain": [
0,
265000
]
},
"axis": null
},
"color": {
"datum": "Candidates",
"scale": {
"domain": [
"Candidates",
"Vacancies"
],
"range": [
"#2a78d6",
"#eb6834"
]
},
"legend": {
"orient": "top",
"title": null,
"symbolType": "square",
"symbolSize": 140,
"symbolOpacity": 0.35,
"labelExpr": "datum.label + ' (count)'"
}
}
}
},
{
"description": "Narrow bars in front: monthly mean vacancies (same hidden count scale)",
"mark": {
"type": "bar",
"width": {
"band": 0.32
},
"opacity": 0.32
},
"encoding": {
"x": {
"field": "week",
"timeUnit": "yearmonth",
"type": "temporal",
"bandPosition": 0.5,
"title": null,
"axis": {
"grid": false,
"format": "%Y",
"tickCount": "year",
"labelFontSize": 11
}
},
"y": {
"aggregate": "mean",
"field": "vacancies",
"type": "quantitative",
"scale": {
"domain": [
0,
265000
]
},
"axis": null
},
"color": {
"datum": "Vacancies",
"scale": {
"domain": [
"Candidates",
"Vacancies"
],
"range": [
"#2a78d6",
"#eb6834"
]
},
"legend": {
"orient": "top",
"title": null,
"symbolType": "square",
"symbolSize": 140,
"symbolOpacity": 0.35,
"labelExpr": "datum.label + ' (count)'"
}
}
}
},
{
"description": "Count end label: last weekly candidates",
"transform": [
{
"window": [
{
"op": "row_number",
"as": "rn"
}
],
"sort": [
{
"field": "week",
"order": "descending"
}
]
},
{
"filter": "datum.rn == 1"
},
{
"calculate": "format(datum.candidates / 1000, '.0f') + 'k'",
"as": "lbl"
}
],
"mark": {
"type": "text",
"align": "left",
"dx": 7,
"fontSize": 10.5,
"fill": "#898781"
},
"encoding": {
"x": {
"field": "week",
"type": "temporal"
},
"y": {
"field": "candidates",
"type": "quantitative",
"scale": {
"domain": [
0,
265000
]
},
"axis": null
},
"text": {
"field": "lbl"
}
}
},
{
"description": "Count end label: last weekly vacancies",
"transform": [
{
"window": [
{
"op": "row_number",
"as": "rn"
}
],
"sort": [
{
"field": "week",
"order": "descending"
}
]
},
{
"filter": "datum.rn == 1"
},
{
"calculate": "format(datum.vacancies / 1000, '.1f') + 'k'",
"as": "lbl"
}
],
"mark": {
"type": "text",
"align": "left",
"dx": 7,
"fontSize": 10.5,
"fill": "#898781"
},
"encoding": {
"x": {
"field": "week",
"type": "temporal"
},
"y": {
"field": "vacancies",
"type": "quantitative",
"scale": {
"domain": [
0,
265000
]
},
"axis": null
},
"text": {
"field": "lbl"
}
}
},
{
"description": "Parity line: 1 candidate per vacancy",
"data": {
"values": [
{
"y": 1
}
]
},
"mark": {
"type": "rule",
"stroke": "#c3c2b7",
"strokeWidth": 1
},
"encoding": {
"y": {
"field": "y",
"type": "quantitative",
"scale": {
"domain": [
0,
16
]
},
"axis": null
}
}
},
{
"description": "Parity label (halo)",
"data": {
"values": [
{
"week": "2020-04-06",
"y": 0.55,
"t": "1:1 parity"
}
]
},
"mark": {
"type": "text",
"align": "left",
"fontSize": 10.5,
"fill": "#fcfcfb",
"stroke": "#fcfcfb",
"strokeWidth": 3.5
},
"encoding": {
"x": {
"field": "week",
"type": "temporal"
},
"y": {
"field": "y",
"type": "quantitative",
"scale": {
"domain": [
0,
16
]
},
"axis": null
},
"text": {
"field": "t"
}
}
},
{
"description": "Parity label",
"data": {
"values": [
{
"week": "2020-04-06",
"y": 0.55,
"t": "1:1 parity"
}
]
},
"mark": {
"type": "text",
"align": "left",
"fontSize": 10.5,
"fill": "#898781"
},
"encoding": {
"x": {
"field": "week",
"type": "temporal"
},
"y": {
"field": "y",
"type": "quantitative",
"scale": {
"domain": [
0,
16
]
},
"axis": null
},
"text": {
"field": "t"
}
}
},
{
"description": "Full-scale invasion rule",
"data": {
"values": [
{
"week": "2022-02-24"
}
]
},
"mark": {
"type": "rule",
"stroke": "#c3c2b7",
"strokeWidth": 1
},
"encoding": {
"x": {
"field": "week",
"type": "temporal"
}
}
},
{
"description": "Full-scale invasion label",
"data": {
"values": [
{
"week": "2022-02-24",
"t": "Full-scale invasion"
}
]
},
"mark": {
"type": "text",
"align": "left",
"dx": 6,
"y": 14,
"fontSize": 11,
"fill": "#52514e"
},
"encoding": {
"x": {
"field": "week",
"type": "temporal"
},
"text": {
"field": "t"
}
}
},
{
"description": "2021 inversion annotation (halo)",
"data": {
"values": [
{
"week": "2021-06-01",
"y": 2.45,
"t": "Jan–Sep 2021: vacancies > candidates"
}
]
},
"mark": {
"type": "text",
"align": "center",
"fontSize": 10.5,
"fill": "#fcfcfb",
"stroke": "#fcfcfb",
"strokeWidth": 3.5
},
"encoding": {
"x": {
"field": "week",
"type": "temporal"
},
"y": {
"field": "y",
"type": "quantitative",
"scale": {
"domain": [
0,
16
]
},
"axis": null
},
"text": {
"field": "t"
}
}
},
{
"description": "2021 inversion annotation",
"data": {
"values": [
{
"week": "2021-06-01",
"y": 2.45,
"t": "Jan–Sep 2021: vacancies > candidates"
}
]
},
"mark": {
"type": "text",
"align": "center",
"fontSize": 10.5,
"fill": "#898781"
},
"encoding": {
"x": {
"field": "week",
"type": "temporal"
},
"y": {
"field": "y",
"type": "quantitative",
"scale": {
"domain": [
0,
16
]
},
"axis": null
},
"text": {
"field": "t"
}
}
},
{
"description": "The hero: weekly candidates-per-vacancy ratio",
"mark": {
"type": "line",
"stroke": "#0b0b0b"
},
"encoding": {
"x": {
"field": "week",
"type": "temporal",
"title": null,
"axis": {
"grid": false,
"format": "%Y",
"tickCount": "year",
"labelFontSize": 11
}
},
"y": {
"field": "ratio",
"type": "quantitative",
"scale": {
"domain": [
0,
16
]
},
"axis": {
"tickCount": 5,
"title": "Candidates per vacancy"
}
}
}
},
{
"description": "Ratio end label (derived from last row)",
"transform": [
{
"window": [
{
"op": "row_number",
"as": "rn"
}
],
"sort": [
{
"field": "week",
"order": "descending"
}
]
},
{
"filter": "datum.rn == 1"
},
{
"calculate": "format(datum.ratio, '.1f')",
"as": "lbl"
}
],
"mark": {
"type": "text",
"align": "left",
"dx": 7,
"fontSize": 12,
"fontWeight": 600,
"fill": "#0b0b0b"
},
"encoding": {
"x": {
"field": "week",
"type": "temporal"
},
"y": {
"field": "ratio",
"type": "quantitative",
"scale": {
"domain": [
0,
16
]
},
"axis": null
},
"text": {
"field": "lbl"
}
}
},
{
"description": "Crosshair + tooltip on nearest week",
"mark": {
"type": "rule",
"stroke": "#c3c2b7",
"strokeWidth": 1
},
"params": [
{
"name": "hover",
"select": {
"type": "point",
"fields": [
"week"
],
"nearest": true,
"on": "mouseover",
"clear": "mouseout"
}
}
],
"encoding": {
"x": {
"field": "week",
"type": "temporal"
},
"opacity": {
"condition": {
"param": "hover",
"empty": false,
"value": 0.6
},
"value": 0
},
"tooltip": [
{
"field": "week",
"type": "temporal",
"title": "Week",
"format": "%b %d, %Y"
},
{
"field": "candidates",
"type": "quantitative",
"title": "Candidates",
"format": ","
},
{
"field": "vacancies",
"type": "quantitative",
"title": "Vacancies",
"format": ","
},
{
"field": "ratio",
"type": "quantitative",
"title": "Per vacancy",
"format": ".2f"
}
]
}
}
]
}