Public
Edited
Oct 21, 2024
Insert cell
Insert cell
sport_world(1).csv
Type Table, then Shift-Enter. Ctrl-space for more options.

Insert cell
sport_world= FileAttachment("sport_world(1).csv").csv({typed: true})

Insert cell
Insert cell
viewof table = Inputs.table(sport_world)
Insert cell
viewof table_kop = Inputs.table(sport_world, {
columns: [
"Наименование соревнования",
"Место проведения",
"Ориентировочное число участников"
],
header: {
"Наименование соревнования": "Name of the competition",
"Место проведения": "Location of the event",
"Ориентировочное число участников": "Estimated number of participants"},
sort: "Ориентировочное число участников", reverse:false, required: false})
Insert cell
table_kop
Insert cell
Plot.plot({
marks: [
Plot.barX(sport_world, {x: "Ориентировочное число участников", y: "Место проведения", fill: "#FF8C00", sort: {x: "x", reverse: true}}),
Plot.ruleY([0]),
Plot.ruleX([0, 100]),
], marginLeft: 280

})
Insert cell
Insert cell
{var a = sport_world.filter( (x)=> x["Ориентировочное число участников"] > 100);
return `Количество соревнований с участниками более 100: ${a.length}, всего соревнований ${sport_world.length}`;}
Insert cell
Insert cell
viewof text = Inputs.text({label: "Место проведения", value: "г. Сочи"})
Insert cell
sport_world_city = sport_world.filter( (x)=> String(x["Место проведения"]).indexOf(text.trim()) > -1)
Insert cell
Inputs.table(sport_world_city,
{
columns: [
"Наименование соревнования",
"Место проведения",
"Ориентировочное число участников"
],
width: {
"Наименование соревнования" : 300,
"Место проведения": 120,
"Ориентировочное число участников" : 250
},
sort: "Ориентировочное число участников", maxHeight: 150, maxWidth: 800, reverse:false})
Insert cell
Insert cell
city = new Set(sport_world.map(d => d["Место проведения"]))
Insert cell
viewof select_city = Inputs.select(city, {label: "Укажите место проведения:", multiple: true, width:200})
Insert cell
Inputs.table(sport_world.filter((x)=>select_city.includes(String(x["Место проведения"]) ) ),
{
columns: [
"Наименование соревнования",
"Сроки проведения",
"Место проведения",
"Ориентировочное число участников"
],
width: {
"Наименование соревнования" : 350,
"Сроки проведения": 100,
"Место проведения": 100,
"Ориентировочное число участников" : 50
},
sort: "Место проведения", maxHeight: 1500, maxWidth: 800, reverse:false})
Insert cell
Insert cell
name = sport_world.map(d => d["Наименование соревнования"])
Insert cell
viewof select = Inputs.select(name, {label: "Укажите наименование соревнования:"})
Insert cell
sportik = sport_world.filter( (x)=> String(x["Наименование соревнования"])==select)
Insert cell
Inputs.table(sportik,
{
columns: [
"Наименование соревнования",
"Место проведения",
"Ориентировочное число участников"
],
width: {
"Наименование соревнования" : 350,
"Место проведения": 100,
"Ориентировочное число участников" : 50
},
sort: "Ориентировочное число участников", maxHeight: 150, maxWidth: 800, reverse:false})
Insert cell
Insert cell
viewof sport = Inputs.text({label: "Наименование соревнования"})
Insert cell
SportName = sportik.filter(item => item['Наименование соревнования'].includes(sport.trim()));
Insert cell
Inputs.table(SportName,
{
columns: [
"Наименование соревнования",
"Место проведения",
"Ориентировочное число участников"
],
header: {
"Наименование соревнования": "Соревнование",
"Место проведения": "Место",
"Ориентировочное число участников" : "Число участников"},
width: {
"Наименование соревнования": 250,
"Место проведения":100,
"Ориентировочное число участников": 100 },
sort: "Ориентировочное число участников", maxHeight: 150, maxWidth: 550, reverse:true})

Insert cell
Insert cell
kol = sport_world.map( (x)=> Number(x["Ориентировочное число участников"])).sort((a,b)=>(a-b))
Insert cell
viewof range_1 = Inputs.range([Math.min(...kol), Math.max(...kol)], {label: "Число участников от:", value:Math.min(...kol), step: 10, width: 500})
Insert cell
viewof range_2 = Inputs.range([range_1, Math.max(...kol)], {label: "Число участников от:", value:Math.max(...kol), step: 10, width: 400})
Insert cell
A = sport_world.filter( (x)=> x["Ориентировочное число участников"] > range_1 && x["Ориентировочное число участников"] < range_2)
Insert cell
{return `Количество соревнований с указанием участников: ${A.length}, всего соревнований ${sport_world.length}`;}
Insert cell
Insert cell
canvas = {
const context = DOM.context2d(200, 50);
context.fillStyle = "hsl(216deg 100% 13%)";
context.fillRect(0, 0, A.length*(200/sport_world.length), 50);
context.canvas.style.background = "hsl(216deg 25% 90%)";
return context.canvas;
}
Insert cell
Insert cell
Inputs.table(A,
{
columns: [
"Наименование соревнования",
"Сроки проведения",
"Место проведения",
"Сроки проведения",
"Ориентировочное число участников"
],
width: {
"Наименование соревнования" : 350,
"Сроки проведения":100,
"Место проведения": 100,
"Ориентировочное число участников" : 50
},
sort: "Ориентировочное число участников", maxHeight: 1500, maxWidth: 800, reverse:false})
Insert cell
Insert cell
Plot.plot({
marks: [
Plot.barX(A, {x: "Ориентировочное число участников", y: "Сроки проведения", fill: "#FF8C00", sort: {x: "x", reverse: true}}),
Plot.ruleY([0]),
Plot.ruleX([0, 100]),
], marginLeft: 250

})
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