val country by columnOf(
"Australia", "Canada", "China", "Cuba", "Finland", "France", "Germany",
"Iceland", "India", "Japan", "North Korea", "South Korea", "New Zealand",
"Norway", "Poland", "Russia", "Turkey", "United Kingdom", "United States"
)
val lifeExp1998 = columnOf(
75.49, 76.03, 66.35, 58.75, 79.64, 82.92, 80.68,
70.71, 60.30, 82.78, 69.57, 74.61, 71.18,
71.43, 75.22, 72.65, 74.56, 75.19, 81.12
) named "lifeExp"
val pop1998 = columnOf(
19000, 30000, 1250000, 11000, 5000,
59000, 82000, 280, 950000, 126000,
24000, 47000, 3800, 4400, 38600,
147000, 63000, 59000, 273000
) named "population"
val gdpPerCapita1998 = columnOf(
29000, 32000, 750, 5000, 28000,
27000, 32000, 34000, 450, 33000,
600, 12000, 22000, 40000, 9000,
4000, 3000, 28000, 35000
) named "gdp"
val dataset1998 = dataFrameOf(country, lifeExp1998, pop1998, gdpPerCapita1998).add("year") { 1998 }
val lifeExp2023 = columnOf(
79.44, 73.60, 70.46, 63.34, 72.10, 78.15, 80.70,
79.88, 63.13, 81.53, 59.33, 71.59, 76.56,
71.97, 78.21, 78.38, 79.76, 84.77, 82.39
) named "lifeExp"
val pop2023 = columnOf(
25000, 38000, 1400000, 11300, 5500,
67000, 83000, 340, 1350000, 126000,
25000, 51000, 5000, 5300, 38000,
146000, 82000, 67000, 331000
) named "population"
val gdpPerCapita2023 = columnOf(
55000, 52000, 10000, 7000, 48000,
44000, 50000, 60000, 2000, 45000,
1200, 30000, 34000, 70000, 15000,
9000, 10000, 40000, 60000
) named "gdp"
val dataset2023 = dataFrameOf(country, lifeExp2023, pop2023, gdpPerCapita2023).add("year") { 2023 }
val dataset = dataset1998.fullJoin(dataset2023)
dataset.groupBy("year").plot {
layout.title = "Life Expectancy and GDP by Country"
points {
x("gdp") { axis.name = "GDP per capita (in dollars)" }
y("lifeExp") { axis.name = "Life expectancy (years)" }
size("population") {
legend.type = LegendType.None
scale = continuous(5.0..20.0)
}
color("year") {
legend {
name = ""
breaks(format = "d")
}
}
}
}