function plot_bars(gamma_mat, beta_mat) {
const beta_by_topic = d3.group(beta_mat, d => d.topic, d => d.word)
return Plot.plot({
height: 350,
width: 1200,
x: {
axis: null,
domain: gamma_mat.title
},
y: {
grid: true,
},
color: {
domain: gamma_mat.title,
scheme: "viridis",
legend: true
},
fx: {
domain: d3.groupSort(gamma_mat, v => d3.sum(v, d => -d.score), d => d.topic),
label: null,
tickSize: 6
},
facet: { data: gamma_mat, x: "topic" },
marks: [
Plot.barY(gamma_mat, {x: "title", y: "score", fill: "title",
title: d => `Top words topic ${d.topic}\n${Array.from(beta_by_topic.get(d.topic).keys()).join('\n')}`}),
Plot.ruleY([0])
]
})
}