{
const selectRegion = vl.selectPoint('Select')
.fields('reg_class')
.init({reg_class: reg_class[0]})
.bind(vl.radio(reg_class).name("US Region "));
const selectLevel = vl.selectPoint('lvlSelect')
.fields('scenario')
.init({scenario: extent[0]})
.bind(vl.menu(extent).name("Extent of Prediction "));
const selectYear = vl.selectPoint('yearSelect')
.fields('year')
.init({year: years[0]})
.bind(vl.menu(years).name("Year "));
const show = vl.and(selectLevel, selectRegion, selectYear);
const map = vl.markGeoshape({fill: '#ddd', stroke: '#fff', strokeWidth: 1})
.data(vl.topojson(usa).feature('states'));
const impact = vl.markCircle()
.data(projections_final)
.params(selectYear, selectLevel, selectRegion)
.transform(vl.filter('datum["reg_class"] != "Caribbean"'),
vl.filter("datum['name'] != 'Wake Island, Pacific Ocean'"),
vl.filter("datum['name'] != 'Kwajalein, Marshall Islands'"),
vl.filter("datum['name'] != 'Pago Pago, American Samoa'"),
vl.filter("datum['name'] != 'Apra Harbor, Guam'"),
vl.filter("datum['name'] != 'Sand Island, Midway Islands'"),
vl.filter("datum['name'] != 'Johnston Atoll'"),
vl.calculate('year(datum.year)').as('Year'))
.encode(
vl.longitude().fieldQ('long'),
vl.latitude().fieldQ('lat'),
vl.size().fieldQ('rise').scale({domain:[0,500]}),
vl.opacity().if(show, vl.value(0.75)).value(0.001),
vl.color().if(show, vl.color().fieldN('scenario').scale({ range: ['#FF8A8A', '#FF5C5C', '#FF2E2E', '#FF0000', '#FF2400', '#D9381E', '#DC143C', '#DA012D', '#D10000', '#A30000', '#9B111E', '#960018', '#800020', '#800000', '#750000'] })).value('grey'),
vl.tooltip().fieldN('name')
);
const combine = vl.layer(map, impact)
.project(vl.projection('albersUsa'))
.title('Map of Affected Coastal Cities')
.width(300)
.height(300);
const graph = vl.markCircle({fill:'blue', size:"200", fill: 'lightblue'})
.data(projections_final)
.params(selectLevel, selectRegion, selectYear)
.padding({top: 120, bottom: 120, left: 100, right: 30})
.title('Sea Level Rise Projections in US Coastal Cities')
.encode(
vl.x().fieldN('name').axis({labels:false, ticks:false}).title('City'),
vl.y().fieldQ('rise').title('Sea Level Rise (cm)'),
vl.opacity().if(show, vl.value(0.75)).value(0.0001),
vl.tooltip().fieldN('name')
)
.width(300)
.height(300);
return vl.hconcat(combine, graph).render()
}