{
const xy = {
x: { field: 'Rotten_Tomatoes_Rating', type: 'Q' },
y: { field: 'IMDB_Rating', type: 'Q' }
};
const hover = {
name: 'hover',
select: {
type: 'point',
on: 'mouseover',
nearest: true,
toggle: false
}
};
const click = { name: 'click', select: { type: 'point' } };
const filter = {
filter: {
or: [
{ param: 'click', empty: false },
{ param: 'hover', empty: false }
]
}
};
return render({
layer: [
{
mark: { type: 'circle' },
params: [ hover, click ],
encoding: xy
},
{
mark: { type: 'point', size: 100, stroke: 'firebrick', strokeWidth: 1 },
transform: [filter],
encoding: xy
},
{
mark: { type: 'text', dx: 4, dy: -8, align: 'right', stroke: 'white', strokeWidth: 2 },
transform: [filter],
encoding: { ...xy, text: { field: 'Title', type: 'N' } }
},
{
mark: { type: 'text', dx: 4, dy: -8, align: 'right' },
transform: [filter],
encoding: { ...xy, text: { field: 'Title', type: 'N' } }
}
],
data: { values: movies },
width: 600,
height: 450
});
}