Unlisted
Edited
May 12, 2023
Insert cell
Insert cell
import {Plot} from "@mkfreeman/plot-tooltip";
Insert cell
import {googleFonts} from "@arthurzwang-workspace/styles";
Insert cell
import {category12511021 as pattern} from "@tomshanley/cheysson-color-palettes";
Insert cell
Color scheme: [Cheysson Palette](https://observablehq.com/@tomshanley/cheysson-color-palettes) licensed under ISC License (ISC) Copyright 2021 [Tom Shanley](https://observablehq.com/@tomshanley)
Insert cell
patterns = () => svg`${pattern.patterns}`
Insert cell
googleFonts;
Insert cell
DECISION = "decision";
Insert cell
PUBLICATION = "publication";
Insert cell
ZEROWIDTH = .2;
Insert cell
timeline_summary.csv
Type Table, then Shift-Enter. Ctrl-space for more options.

Insert cell
comps.csv
Type Table, then Shift-Enter. Ctrl-space for more options.

Insert cell
timebars = comps.map(function (d) {
return {
journal: d.journal == "Post45" ? d.journal + " (typical)": d.journal,
type: DECISION,
low: d.decision_low,
high: d.decision_high,
}
}).concat(comps.map(function (d) {
return {
journal: d.journal == "Post45" ? d.journal + " (typical)": d.journal,
type: PUBLICATION,
low: d.publication_low,
high: d.publication_high,
};
})).concat(timeline_summary.map(function (d) {
return {
journal: `Post45 (${d.decision})`,
type: d.type,
low: +d3.format(".1f")(d.low),
high: +d3.format(".1f")(d.high),
};
}));
Insert cell
compsChart = Plot.plot({
marginLeft: 180,
x: {
label: "Time in Months",
grid: true,
labelAnchor: "center",
},
y: {
label: "Journal"
},
color: {
range: pattern.rangeURLs,
legend: true,
},
style: {
// backgroundColor: "#f9ece3",
backgroundColor: "#fcf5f0",
fontFamily: "Comme",
},
marks: [
patterns,
Plot.barX(timebars, {
x1: (d) => d.low == d.high ? d.low - ZEROWIDTH : d.low,
x2: (d) => d.low == d.high ? d.high + ZEROWIDTH: d.high,
y: "journal",
sort: {y: "y"},
fill: function(d){
if (d.journal.includes("Post45")) {
return "Post45 " + d.type;
} else {
return d.type;
}
},
fillOpacity: .9,
mixBlendMode: "darken",
title: (d) => (`Time to ${d.type}: ` + (d.low == d.high ? `${d.low} `: `${d.low} - ${d.high} `) + "Months"),
}),
Plot.ruleX([0]),
Plot.frame(),
],
caption: html`Response time data for journals other than <i>Post45</i> were taken from the <a href="https://www.mla.org/Publications/MLA-International-Bibliography/About-the-MLA-International-Bibliography/MLA-Directory-of-Periodicals">MLA Directory of Periodicals</a> (accessed May 2023). Data on <i>Post45</i> is based on submissions since 2020 (not including special issue submissions)
`,
});
Insert cell
wideCompsChart = Plot.plot({
marginLeft: 275,
marginBottom: 40,
width: 1000,
x: {
label: "Time in Months",
grid: true,
labelAnchor: "center",
},
y: {
label: "Journal"
},
color: {
range: pattern.rangeURLs,
legend: true,
},
style: {
// backgroundColor: "#f9ece3",
backgroundColor: "#fcf5f0",
fontFamily: "Comme",
fontSize: "12pt",
},
marks: [
patterns,
Plot.barX(timebars, {
x1: (d) => d.low == d.high ? d.low - ZEROWIDTH : d.low,
x2: (d) => d.low == d.high ? d.high + ZEROWIDTH: d.high,
y: "journal",
sort: {y: "y"},
fill: function(d){
if (d.journal.includes("Post45")) {
return "Post45 " + (d.type == DECISION ? DECISION : PUBLICATION);
} else {
return d.type == DECISION ? DECISION: PUBLICATION;
}
},
fillOpacity: .9,
mixBlendMode: "darken",
title: (d) => (`Time to ${d.type}: ` + (d.low == d.high ? `${d.low} `: `${d.low} - ${d.high} `) + "Months"),
}),
Plot.ruleX([0]),
Plot.frame(),
],
caption: html`Response time data for journals other than <i>Post45</i> were taken from the <a href="https://www.mla.org/Publications/MLA-International-Bibliography/About-the-MLA-International-Bibliography/MLA-Directory-of-Periodicals">MLA Directory of Periodicals</a> (accessed May 2023). Data on <i>Post45</i> is based on submissions since 2020 (not including special issue submissions)
`,
});
Insert cell
d3.select("figure").selectAll("text").filter(function() {
return d3.select(this).text().includes("Post45");
}).attr("fill", pattern.rangeURLs[5])
Insert cell
acceptanceRates = comps.map((d) => ({journal: d.journal, acceptance_rate: parseFloat(d.acceptance_rate)}))
Insert cell
acceptanceRates
Type Table, then Shift-Enter. Ctrl-space for more options.

Insert cell
Insert cell
Select a data source…
Type Table, then Shift-Enter. Ctrl-space for more options.

Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more