vis1 = {
d3.timeFormatDefaultLocale({
dateTime: "%A, %e %B %Y р. %X",
date: "%d.%m.%Y",
time: "%H:%M:%S",
periods: ["дп", "пп"],
days: [
"неділя",
"понеділок",
"вівторок",
"середа",
"четвер",
"п'ятниця",
"субота"
],
shortDays: ["нд", "пн", "вт", "ср", "чт", "пт", "сб"],
months: [
"січня",
"лютого",
"березня",
"квітня",
"травня",
"червня",
"липня",
"серпня",
"вересня",
"жовтня",
"листопада",
"грудня"
],
shortMonths: [
"січ",
"лют",
"бер",
"квіт",
"трав",
"черв",
"лип",
"серп",
"вер",
"жов",
"лист",
"груд"
]
});
const plot1 = Plot.plot({
subtitle: "Приріст маневрених потужностей по даті введеня в експлуатацію",
style: { fontSize: 14, fontWeight: 400, color: "#333" },
y: {
domain: [0, 4000],
label: null,
labelArrow: null,
labelOffset: 30,
nice: true
},
x: {
domain: [new Date("2024-07-01"), new Date("2028-01-01")],
label: null
},
marginTop: 30,
marginBottom: 100,
marginLeft: 160,
width: 850,
marks: [
Plot.ruleY([4000], { strokeDasharray: "2 2" }),
Plot.dot(data, {
x: "date_end",
y: "cum",
tip: true,
opacity: 1,
r: 3.5,
title: (d) =>
`Потужність: ${d.power} мВт\n\nІніціатор: ${d["Ініціатор"]}\nКод проєкту на сайті DREAM: ${d["Код проєкту"]}`
}),
Plot.line(data, {
x: "date_end",
y: "cum",
stroke: "orange",
strokeWidth: 6,
opacity: 0.7
}),
Plot.arrow([0], {
x1: new Date("2024-01-01"),
x2: new Date("2024-04-15"),
y1: 3500,
y2: 4000,
bend: 40,
dx: -10
}),
Plot.arrow([0], {
x1: new Date("2025-04-01"),
x2: new Date("2025-02-01"),
y1: -400,
y2: 100,
bend: -30,
dx: -15
}),
Plot.arrow([0], {
x1: new Date("2025-04-01"),
x2: new Date("2025-06-01"),
y1: 1000,
y2: 700,
bend: -30,
dx: -10
}),
Plot.arrow([0], {
x1: new Date("2026-09-01"),
x2: new Date("2026-07-01"),
y1: 1750,
y2: 2200,
bend: 30,
dx: -12
}),
Plot.arrow([0], {
x1: new Date("2027-07-11"),
x2: new Date("2027-11-01"),
y1: 1750,
y2: 2600,
bend: -30,
dx: -12
}),
Plot.text([`мВт`], {
frameAnchor: "top-left",
fontSize: 16,
x: new Date("2024-04-20"),
y: 4300,
dx: -5,
fill: "#000",
fontWeight: 700
}),
Plot.text(
[
`"Україна має план як збудувати до 1 гігавата потужностей маневрової газової генерації вже цього року, і ще 4 гігавати – упродовж наступних років", - Зеленський`
],
{
frameAnchor: "top-left",
lineWidth: 10,
x: new Date("2023-07-20"),
y: 3450,
dx: 25,
strokeWidth: 4,
fill: "#000",
fontWeight: 300
}
),
Plot.text(
[`На початок 2025 року заплановане введення проектів лише на 150 мВт.`],
{
frameAnchor: "top-left",
lineWidth: 14,
x: new Date("2025-01-01"),
y: -500,
dx: 25,
strokeWidth: 4,
fill: "#000",
fontWeight: 300
}
),
Plot.text(
[
`Укрзалізниця хоче побудувати в девʼяти областях України 15 електростанцій з виробництва електричної енергії з використанням газопоршневих генераторів загальною потужністю до 250 МВт.`
],
{
frameAnchor: "top-left",
lineWidth: 14,
x: new Date("2024-09-01"),
y: 2500,
dx: 25,
strokeWidth: 4,
fill: "#000",
fontWeight: 300
}
),
Plot.text(
[
`"Укрнафта" прийняла стратегічне рішення піти у електровиробники. Компанія хоче побудувати 500 мВт в Полтавській області і 320 мВт - у Львівській`
],
{
frameAnchor: "middle",
lineWidth: 16,
x: new Date("2026-11-24"),
y: 1300,
dx: 25,
strokeWidth: 4,
fill: "#000",
fontWeight: 300
}
)
],
caption: html`<small style='color:grey;text-align: start;'>Наведіть, щоб побачити деталі ${iconHandTap}<br></small>
<small style="color:grey">Дані: bi.dream.gov.ua. Для аналізу серед більше 10,8 тис проектів були відібрані ті, де вказані генеруючі потужності.</small>`
});
const plot2 = Plot.plot({
subtitle: "Приріст маневрених потужностей по даті введеня в експлуатацію",
style: { fontSize: 14, fontWeight: 400, color: "#333" },
y: {
domain: [0, 4000],
label: null,
labelArrow: null,
labelOffset: 30,
nice: true
},
x: {
domain: [new Date("2024-07-01"), new Date("2028-01-01")],
label: null
},
marginTop: 100,
marginBottom: 100,
marginLeft: 45,
width: 350,
marks: [
Plot.ruleY([4000], { strokeDasharray: "2 2" }),
Plot.dot(data, {
x: "date_end",
y: "cum",
tip: true,
opacity: 1,
title: (d) =>
`Потужність: ${d.power} мВт\n\nІніціатор: ${d["Ініціатор"]}\nКод проєкту на сайті DREAM: ${d["Код проєкту"]}`
}),
Plot.line(data, {
x: "date_end",
y: "cum",
stroke: "orange",
strokeWidth: 4,
opacity: 0.7
}),
Plot.arrow([0], {
x1: new Date("2025-08-01"),
x2: new Date("2025-04-01"),
y1: -400,
y2: 100,
bend: -30,
dx: -15
}),
Plot.arrow([0], {
x1: new Date("2025-04-01"),
x2: new Date("2025-06-01"),
y1: 1200,
y2: 700,
bend: -30,
dx: -10
}),
Plot.arrow([0], {
x1: new Date("2026-09-01"),
x2: new Date("2026-07-01"),
y1: 1750,
y2: 2200,
bend: 30,
dx: -5
}),
Plot.arrow([0], {
x1: new Date("2027-07-11"),
x2: new Date("2027-11-01"),
y1: 1750,
y2: 2600,
bend: -30,
dx: 0
}),
Plot.text([`мВт`], {
frameAnchor: "top-left",
fontSize: 16,
x: new Date("2024-04-20"),
y: 4300,
dx: -20,
fill: "#000",
fontWeight: 700
}),
Plot.text(
[
`"Україна має план як збудувати до 1 гігавата потужностей маневрової газової генерації вже цього року, і ще 4 гігавати – упродовж наступних років", - Зеленський`
],
{
frameAnchor: "top-left",
lineWidth: 22,
x: new Date("2024-05-10"),
y: 4800,
dx: 25,
strokeWidth: 4,
fill: "#000",
fontWeight: 300
}
),
Plot.text(
[`На початок 2025 року заплановане введення проектів лише на 150 мВт.`],
{
frameAnchor: "top-left",
lineWidth: 14,
x: new Date("2024-01-01"),
y: -500,
dx: 25,
strokeWidth: 4,
fill: "#000",
fontWeight: 300
}
),
Plot.text(
[
`Укрзалізниця хоче побудувати в девʼяти областях України 15 електростанцій з виробництва електричної енергії з використанням газопоршневих генераторів загальною потужністю\nдо 250 МВт.`
],
{
frameAnchor: "top-left",
lineWidth: 10,
x: new Date("2024-05-01"),
y: 3500,
dx: 25,
strokeWidth: 4,
fill: "#000",
fontWeight: 300
}
),
Plot.text(
[
`"Укрнафта" прийняла стратегічне рішення піти у електровиробники. Компанія хоче побудувати 500 мВт в Полтавській області і 320 мВт - у Львівській`
],
{
frameAnchor: "middle",
lineWidth: 12,
x: new Date("2026-11-24"),
y: 1000,
dx: 15,
strokeWidth: 4,
fill: "#000",
fontWeight: 300
}
)
],
caption: html`<small style='color:grey;text-align: start;'>Наведіть, щоб побачити деталі ${iconHandTap}<br></small>
<small style="color:grey">Дані: bi.dream.gov.ua. Для аналізу серед більше 10,8 тис проектів були відібрані ті, де вказані генеруючі потужності.</small>`
});
return width > 650 ? plot1 : plot2;
}