Machine-readable page content
Canonical: https://semiotic.nteract.io/examples/distant-reading
Can You Know a Book Better Without Reading It?
A remake of the distant-reading essay
The original essay asked whether visualization can derive meaning from a book without replacing the act of reading. This example treats that as an interface: chapter signals, narrative pressure, and character flows become a readable object of their own.
1818Frankenstein
Mary Shelley
Its strongest shape is not the monster. It is nested testimony that turns inwardness into motion.
24chapter bins
74,500modeled words
Ch. 23peak pressure
10volatility
01The book as a signal field
Pick a signal, then scan the chapter map. The tallest mark is not a passage to quote; it is a place to ask why the book changes shape there.
Interior close-upChapter 11Reflection, self-argument, memory, shame, and inward narration. Score: 80. Dominant texture:interior. Estimated local weight: 3,058 words.
02Interior through the book
A chapter-level trace lets the reader see where the chosen signal gathers, breaks, and returns.
03Where that signal lives
The same chapter scores are collapsed into narrative phases, trading local detail for a quicker structural read.
04A distant reading still has characters
The Sankey view is not a plot summary. It is a pressure map: who frames whom, what forces mediate action, and which places become narrative machinery.
QuestionWhen does confession become pursuit?
Source noteModeled as 24 chapter-level bins from the 1818 public-domain novel.
05Corpus fingerprints
Each dot is a chapter. The books keep their color, so clustering shows when different novels briefly occupy the same signal territory.
06The point is not automation
The data model is intentionally small: four local signal arrays, phase summaries, and a network per book. The interface is the argument. Visualization does not read for you; it gives you a different first question to bring back to the text.
JSX
import { LineChart, BarChart, SankeyDiagram } from "semiotic" import { BOOKS, signalRows, phaseRows } from "./data/distantReading" const book = BOOKS.find((d) => d.id === "frankenstein") const activeSignal = "interiority" <LineChart data={signalRows(book, activeSignal)} xAccessor="chapter" yAccessor="value" yExtent={[0, 100]} /> <BarChart data={phaseRows(book, activeSignal)} categoryAccessor="phase" valueAccessor="score" orientation="horizontal" /> <SankeyDiagram nodes={book.network.nodes} edges={book.network.edges} nodeIdAccessor="id" sourceAccessor="source" targetAccessor="target" valueAccessor="value" />