{
const n_avg_line1 = vl.markBar({strokeWidth: 1, opacity: 0.5})
.encode(
vl.x().average("excitement2").scale({domain: [-10, 10]}),
vl.y().fieldN("rollercoaster_type").sort(['Hypercoaster','Wooden Roller Coaster','Inverted Roller Coaster','Looping Roller Coaster','Vertical Drop Coaster', 'Mine Train Coaster','Corkscrew Roller Coaster', 'Mini Roller Coaster', 'Wooden Wild Mouse', 'Twister Coaster', 'Compact Inverted Coaster','Spiral Coaster']),
vl.color().fieldN("custom_design").scale({
domain: ['0', '1'],
range: ['#77BB55','#9955bb']
}),
vl.tooltip().average("excitement2"),
);
const n_avg1 = vl.markPoint({filled: true, opacity: 1, size: 100})
.encode(
vl.x().average("excitement2"),
vl.y().fieldN("rollercoaster_type").sort(['Hypercoaster','Wooden Roller Coaster','Inverted Roller Coaster','Looping Roller Coaster','Vertical Drop Coaster', 'Mine Train Coaster','Corkscrew Roller Coaster', 'Mini Roller Coaster', 'Wooden Wild Mouse', 'Twister Coaster','Compact Inverted Coaster', 'Spiral Coaster']),
vl.color().fieldN("custom_design").scale({
domain: ['0', '1'],
range: ['#77BB55','#9955bb']
}),
vl.tooltip().average("excitement2"),
);
const n_all1 = vl.markPoint({filled: false, opacity: 0.3, size: 75})
.encode(
vl.x().fieldQ("excitement2").title('Average Excitement'),
vl.y().fieldN("rollercoaster_type").sort(['Hypercoaster','Wooden Roller Coaster','Inverted Roller Coaster','Looping Roller Coaster','Vertical Drop Coaster', 'Mine Train Coaster','Corkscrew Roller Coaster', 'Mini Roller Coaster', 'Wooden Wild Mouse', 'Twister Coaster','Compact Inverted Coaster', 'Spiral Coaster']).title('Roller Coaster Type'),
vl.color().fieldN("custom_design").scale({
domain: ['0', '1'],
range: ['#77BB55','#9955bb']
}).title("Custom Design"),
);
const n_avg_line2 = vl.markBar({strokeWidth: 1, opacity: 0.5})
.encode(
vl.x().average("intensity2"),
vl.y().fieldN("rollercoaster_type").sort(['Inverted Roller Coaster', 'Wooden Roller Coaster', 'Hypercoaster', 'Mine Train Coaster', 'Vertical Drop Coaster', 'Looping Roller Coaster','Corkscrew Roller Coaster', 'Mini Roller Coaster', 'Wooden Wild Mouse', 'Compact Inverted Coaster', 'Stand Up Roller Coaster', 'Twister Coaster']),
vl.color().fieldN("custom_design").scale({
domain: ['0', '1'],
range: ['#77BB55','#9955bb']
}),
vl.tooltip().average("intensity2")
);
const n_avg2 = vl.markPoint({filled: true, opacity: 1, size: 100})
.encode(
vl.x().average("intensity2"),
vl.y().fieldN("rollercoaster_type").sort(['Inverted Roller Coaster', 'Wooden Roller Coaster', 'Hypercoaster', 'Mine Train Coaster', 'Vertical Drop Coaster', 'Looping Roller Coaster','Corkscrew Roller Coaster', 'Mini Roller Coaster', 'Wooden Wild Mouse', 'Compact Inverted Coaster', 'Stand Up Roller Coaster', 'Twister Coaster']),
vl.color().fieldN("custom_design"),
vl.tooltip().average("intensity2"),
);
const n_all2 = vl.markPoint({filled: false, opacity: 0.3, size: 75})
.encode(
vl.x().fieldQ("intensity2").title('Average Intensity'),
vl.y().fieldN("rollercoaster_type").sort(['Inverted Roller Coaster', 'Wooden Roller Coaster', 'Hypercoaster', 'Mine Train Coaster', 'Vertical Drop Coaster', 'Looping Roller Coaster','Corkscrew Roller Coaster', 'Mini Roller Coaster', 'Wooden Wild Mouse', 'Compact Inverted Coaster', 'Stand Up Roller Coaster', 'Twister Coaster']).title('Roller Coaster Type'),
vl.color().fieldN("custom_design").scale({
domain: ['0', '1'],
range: ['#77BB55','#9955bb']
}).title("Custom Design")
);
const n_avg_line3 = vl.markBar({strokeWidth: 1, opacity: 0.5})
.encode(
vl.x().average("nausea2").scale({domain: [-10, 10]}),
vl.y().fieldN("rollercoaster_type").sort(['Inverted Roller Coaster', 'Wooden Roller Coaster', 'Mine Train Coaster', 'Hypercoaster', 'Mini Roller Coaster', 'Looping Roller Coaster', 'Compact Inverted Coaster', 'Vertical Drop Coaster', 'Corkscrew Roller Coaster', 'Stand Up Roller Coaster', 'Wooden Wild Mouse', 'Twister Coaster', 'Dinghy Slide', 'Spiral Coaster']),
vl.color().fieldN("custom_design").scale({
domain: ['0', '1'],
range: ['#77BB55','#9955bb']
}),
vl.tooltip().average("nausea2"),
);
const n_avg3 = vl.markPoint({filled: true, opacity: 1, size: 100})
.encode(
vl.x().average("nausea2"),
vl.y().fieldN("rollercoaster_type").sort(['Inverted Roller Coaster', 'Wooden Roller Coaster', 'Mine Train Coaster', 'Hypercoaster', 'Mini Roller Coaster', 'Looping Roller Coaster', 'Compact Inverted Coaster', 'Vertical Drop Coaster', 'Corkscrew Roller Coaster', 'Stand Up Roller Coaster', 'Wooden Wild Mouse', 'Twister Coaster', 'Dinghy Slide', 'Spiral Coaster']),
vl.color().fieldN("custom_design"),
vl.tooltip().average("nausea2")
);
const n_all3 = vl.markPoint({filled: false, opacity: 0.3, size: 75})
.encode(
vl.x().fieldQ("nausea2").title('Average Nausea'),
vl.y().fieldN("rollercoaster_type").sort(['Inverted Roller Coaster', 'Wooden Roller Coaster', 'Mine Train Coaster', 'Hypercoaster', 'Mini Roller Coaster', 'Looping Roller Coaster', 'Compact Inverted Coaster', 'Vertical Drop Coaster', 'Corkscrew Roller Coaster', 'Stand Up Roller Coaster', 'Wooden Wild Mouse', 'Twister Coaster', 'Dinghy Slide', 'Spiral Coaster']).title('Roller Coaster Type'),
vl.color().fieldN("custom_design").scale({
domain: ['0', '1'],
range: ['#77BB55','#9955bb']
}).title("Custom Design")
);
return vl.data(stat)
.title({
text: "Average Excitement, Intensity, Nasuea by Rollercoaster Type (all values positive)",
anchor: "middle",
fontSize: 14
})
.vconcat(
vl.layer(n_avg_line1, n_avg1, n_all1).width(700).height(250),
vl.layer(n_avg_line2, n_avg2, n_all2).width(700).height(250),
vl.layer(n_avg_line3, n_avg3, n_all3).width(700).height(250)
)
.render()
}