heatMap = {
const concatenation = correlationAnalysis.concat(
correlationAnalysis.derive({
metric_2: ({ metric_1 }) => metric_1,
metric_1: ({ metric_2 }) => metric_2
})
);
let thisMetricName = metricName;
let thisTitle = title;
let thisLookupTable = lookupTable;
if (data._fromNotebook) {
thisMetricName == "DJIA Stock";
thisTitle = "DJIA 2020 Correlation Analysis";
thisLookupTable = stockCompany;
}
thisMetricName = thisMetricName || "Metric";
thisTitle = thisTitle || "Metric Correlation Analysis";
thisLookupTable =
thisLookupTable ||
[
...new Map(
[]
.concat(
correlationAnalysis._data.metric_1.data,
correlationAnalysis._data.metric_2.data
)
.map((d) => [d, d])
).keys()
].map((d) => ({ metric: d, field: d }));
const lookupFields = Object.keys(thisLookupTable[0]);
const lookup = vl
.lookupData(thisLookupTable)
.key(lookupFields[0])
.fields([lookupFields[1]]);
return vl
.markBar()
.title({
text: thisTitle,
subtitle: correlationsRadioButtons.subtitle
})
.data(concatenation)
.transform(
vl.lookup("metric_1").from(lookup).as(`${lookupFields[0]} 1`),
vl.lookup("metric_2").from(lookup).as(`${lookupFields[0]} 2`)
)
.encode(
vl.y().fieldN("metric_1").title(thisMetricName),
vl.x().fieldN("metric_2").title(thisMetricName),
vl.color().fieldQ("Correlation").scale({ scheme: colorScheme }),
vl.tooltip([
`${lookupFields[0]} 1`,
`${lookupFields[0]} 2`,
{ field: "Correlation", format: "r" }
]),
vl
.opacity()
.if(correlationsRadioButtons.isolation, vl.value(1))
.value(0.09)
)
.render();
}