{
const map = vl.markGeoshape({fill: '#ddd', stroke: '#fff', strokeWidth: 1})
.data(vl.topojson(usa).feature('states'));
const points = vl.markCircle()
.data(flights)
.transform(
vl.groupby('origin').aggregate(vl.count().as('routes')),
vl.lookup('origin').from(
vl.data(airports).key('iata').fields('state', 'latitude', 'longitude')
),
vl.filter('datum.state !== "PR" && datum.state !== "VI"')
)
.encode(
vl.latitude().fieldQ('latitude'),
vl.longitude().fieldQ('longitude'),
vl.tooltip([vl.fieldN('origin'), vl.fieldQ('routes')]),
vl.size().fieldQ('routes').scale({range: [0, 1000]}).legend(null),
vl.order().fieldQ('routes').sort('descending'),
);
return vl.layer(map, points)
.project(vl.projection('albersUsa'))
.width(900).height(500)
.config({view: {stroke: null}})
.render();
}