{ const line = vl.markLine({strokeWidth:9, opacity: 0.4, interpolate: 'monotone'})
.encode(
vl.x().fieldQ('WeeksAheadPurchased')
.title('Weeks Ahead Purchased')
.axis({labelAngle:0, tickCount: 6}),
vl.y().fieldQ('TicketPriceEuros')
.title('Ticket Price in Euros'),
vl.color().fieldN('Mode'));
const point = vl.markPoint({size: 100, filled: true, shape: 'circle'})
.encode(
vl.x().fieldQ('WeeksAheadPurchased')
.title('Weeks Ahead Purchased')
.axis({labelAngle:0, tickCount: 6}),
vl.y().fieldQ('TicketPriceEuros')
.title('Ticket Price in Euros'),
vl.color().fieldN('Mode'));
return vl.layer(line, point)
.facet({row: {field: 'Route',
header: {title: null, labelAngle:360, labelAlign: 'left', labelFont: 'Helvetica',
labelFontStyle: 'bold', labelFontSize: 12},
sort: ['Zurich-Milan', 'London-Amsterdam', 'Berlin-Warsaw', 'Munich-Budapest',
'London-Marseille', 'Paris-Barcelona',]}})
.data(paired)
.title({
text: "Travel in Europe by Route",
fontSize: 25,
font: "Helvetica",
anchor: "middle"})
.resolve({axis: {x: 'independent'}})
.render();
}