Plot.plot({
className: "plot",
color: {
legend: true,
domain: ["Democrat", "Independent", "Republican"],
range: ["#083a90", "#06be37", "#e81b23"]
},
marks: [
Plot.axisY({
label: "Perceived Ideology",
labelAnchor: "center",
labelArrow: false}),
Plot.axisY({
label: "Conservative",
labelAnchor: "top"}),
Plot.axisX({
label: "Legislative Ideology",
labelAnchor: "center",
labelArrow: false}),
Plot.axisX({
label: "Conservative",
labelAnchor: "right"}),
Plot.gridY({stroke: "black", strokeOpacity: 0.2}),
Plot.gridX({stroke: "black", strokeOpacity: 0.2}),
Plot.dot(transpose(plot_data),
{
filter: (d) => d.year == year && chamber.includes(d.chamber),
x: "nominate_dim1",
y: "mean",
fill: "Party",
channels: {
Name: "Candidate",
"Leg Ideo": "nominate_dim1",
"Voter Ideo": "mean",
"Chamber": "chamber"
},
tip: {
format: {
y: false,
x: false
}
}
})
]
}
)
viewof year = Inputs.select(["2006","2008","2010","2012","2014","2016", "2018", "2020", "2022"], {label: "Year", value: "2022"})
viewof chamber = Inputs.checkbox(["House","Senate"], {label: "Chamber", value: ["House","Senate"]})