plot = new G2Plot.Scatter("container", {
appendPadding: [10, 24, 10, 24],
data: waffleData,
xField: "x",
yField: "y",
colorField: "name",
shapeField: "name",
size: ({ percentage }) => Math.max(percentage, 0.5) * 10,
tooltip: { showCrosshairs: false, fields: ["name", "value"] },
xAxis: false,
yAxis: false,
rawFields: ["percentage"],
shape: ({ name }) => {
return name;
},
pointStyle: ({ name }) => {
return {
lineWidth: name ? 1 : 0
};
},
legend: {
marker: {
spacing: 0
},
itemName: {
formatter: (text, item, idx) => {
return data[idx].emojiCode
? String.fromCodePoint(parseInt(data[idx].emojiCode, 16))
: "";
}
},
itemValue: {
formatter: (text) => {
return text;
},
style: {
fill: "rgba(0,0,0,0.65)"
}
},
itemStates: {
unchecked: {
nameStyle: {
fillOpacity: 0.45
},
valueStyle: {
fillOpacity: 0.45
}
}
}
},
state: {
active: {
style: {
shadowColor: "rgba(100, 100,100, 0.25)",
shadowBlur: 15
}
}
},
interactions: [
{
type: "element-active",
cfg: {
start: [
{
trigger: "element:mouseenter",
action: ["cursor:pointer", "element-active:active"]
}
],
end: [
{
trigger: "element:mouseleave",
action: ["cursor:default", "element-active:reset"]
}
]
}
}
]
})