jobImpact.forEach(d => d["AI Impact"] = +d["AI Impact"].replace("%", ""))
const domainStats = d3.rollups(jobImpact, v => d3.mean(v, d => d["AI Impact"]), d => d.Domain)
html`<h3>Average AI Impact by Job Domain</h3>`
Plot.plot({
y: {label: "Domain", padding: 5},
x: {label: "Avg AI Impact (%)"},
marks: [
Plot.barX(domainStats, {
x: ([, v]) => v,
y: ([k]) => k,
fill: "steelblue"
})
]
})
const utilityByKnowledge = d3.rollups(
studentSurvey,
v => d3.mean(v, d => +d["Q7.Utility_grade"]),
d => d["Q1.AI_knowledge"]
)
html`<h3>Perceived AI Utility by Knowledge Level</h3>`
Plot.plot({
x: {label: "AI Knowledge (1-10)"},
y: {label: "Avg Utility"},
marks: [
Plot.line(utilityByKnowledge, {x: d => +d[0], y: d => d[1], stroke: "green"}),
Plot.dot(utilityByKnowledge, {x: d => +d[0], y: d => d[1], fill: "green"})
]
})
const trustCounts = d3.rollups(
publicOpinion,
v => v.length,
d => d["What_is_your_level_of_familiarity_with_AI?"],
d => d["How_much_do_you_trust_AI_to_make_decisions_in_your_daily_life?"]
)
const trustFormatted = trustCounts.flatMap(([fam, sub]) => sub.map(([trust, count]) => ({familiarity: fam, trust, count})))
html`<h3>Trust in AI by Familiarity</h3>`
Plot.plot({
x: {label: "Familiarity"},
y: {label: "Count"},
color: {legend: true},
marks: [
Plot.barY(trustFormatted, {
x: "familiarity",
y: "count",
fill: "trust"
})
]
})
const feelings = d3.rollups(
studentSurvey,
v => v.length,
d => d["Q1.AI_knowledge"],
d => d["Q5.Feelings"]
)
const feelingsFormatted = feelings.flatMap(([know, sub]) => sub.map(([sent, count]) => ({knowledge: know, sentiment: sent, count})))
html`<h3>Overall AI Sentiment by Knowledge Level</h3>`
Plot.plot({
x: {label: "AI Knowledge"},
y: {label: "Count"},
color: {legend: true},
marks: [
Plot.barY(feelingsFormatted, {
x: "knowledge",
y: "count",
fill: "sentiment"
})
]
})