vl.layer(
vl.markPoint({ size: 100 })
.data(newmodels)
.encode(
vl.x().fieldQ('Accuracy').title('Accuracy').scale({ domain: [0.6, 1] }),
vl.y().fieldQ('AUC').title('AUC').scale({ domain: [0.9, 1] }),
vl.color().fieldN('Model').title('Model').scale({ scheme: "category10" }),
vl.shape().fieldN('Balanced?').title('Balanced'),
vl.tooltip([vl.tooltip().fieldN('Model'), vl.tooltip().fieldQ('Macro-F1').title('F1 Score')])
),
vl.markRule()
.data(newmodels)
.encode( vl.x().fieldQ('Acc_CI_low'),
vl.x2().fieldQ('Acc_CI_high'),
vl.y().fieldQ('AUC'),
vl.color().fieldN('Model') ),
vl.markRule()
.data(newmodels)
.encode(
vl.y().fieldQ('AUC_CI_low'),
vl.y2().fieldQ('AUC_CI_high'),
vl.x().fieldQ('Accuracy'),
vl.color().fieldN('Model'))
)
.width(550)
.height(350)
.title('Accuracy vs. AUC with Confidence Intervals')
.render()