g2({
type: "facetRect",
height: 320,
width: 800,
paddingLeft: 5,
paddingBottom: 50,
data: data
.filter((d) => d.noc === "CHN")
.map((d) => ({
...d,
medal:
d.gold !== 0
? "金牌"
: d.silver !== 0
? "银牌"
: d.bronze !== 0
? "铜牌"
: "无牌"
})),
encode: { y: "medal" },
scale: {
y: { domain: ["金牌", "银牌", "铜牌", "无牌"] },
color: {
domain: ["金牌", "银牌", "铜牌", "无牌"],
range: ["#F6BD16", "#5D7092", "#CE8032", "#eee"]
}
},
children: [
{
type: "view",
scale: {
color: {
domain: ["金牌", "银牌", "铜牌", "无牌"],
range: ["#F6BD16", "#5D7092", "#CE8032", "#eee"]
}
},
children: [
{
type: "lineX",
data: {
transform: [{ type: "filter", callback: (d) => d.gender === "男" }]
},
encode: { x: "age" },
transform: [{ type: "selectX", selector: "min" }],
style: { stroke: "grey", strokeWidth: 3, strokeOpacity: 1 }
},
{
type: "lineX",
encode: { x: "age" },
data: {
transform: [{ type: "filter", callback: (d) => d.gender === "男" }]
},
transform: [{ type: "selectX", selector: "max" }],
style: { stroke: "grey", strokeWidth: 3, strokeOpacity: 1 }
},
{
type: "lineX",
encode: { x: "age", color: "medal" },
data: {
transform: [{ type: "filter", callback: (d) => d.gender === "女" }]
},
transform: [{ type: "selectX", selector: "median" }],
style: { strokeWidth: 3, strokeOpacity: 1 }
},
{
type: "point",
data: {
transform: [{ type: "filter", callback: (d) => d.gender === "男" }]
},
encode: { x: "age", size: 2 },
style: { shape: "point", fill: "grey" }
},
{
type: "point",
data: {
transform: [{ type: "filter", callback: (d) => d.gender === "女" }]
},
encode: { x: "age", color: "medal", size: 3 },
style: { shape: "point" }
}
]
}
]
})