Interactive Information Visualization was one of my favorite classes at Cornell (so was Wines class!). We built with D3.js and explored how design and interaction change the way people understand data. It also introduced me to data journalism, a field that brought together my love for writing with data and design. For our final project, we were given an open-ended assignment: build an interactive article around a topic of our choice.
Liberation Day had just happened, tariffs were everywhere in the news, and the stock market was reacting almost in real time. But for someone who didn’t closely follow trade policy or markets, the connection between a government announcement and a moving stock chart wasn’t necessarily obvious. That became the question behind my article:
What did investors know before April 2, and what was the market doing while they learned it?
I cleaned and structured everything in Python with pandas, then passed static datasets into D3.js to build the article.
I used sector funds to capture areas of the market with different connections to trade, production, supply chains, and consumer spending. I chose sectors that felt relevant to the story, while keeping the comparison broad enough to reflect more than what was happening at any one company.
| Fund / ETF | Sector | Relevance |
|---|---|---|
| SPY | S&P 500 | Baseline for the broader market |
| SOXX | Semiconductors | Global supply chains centered in Asia |
| XLI | Industrials | Imported parts and global manufacturing |
| XLB | Materials | Raw inputs across supply chains |
| XLY | Consumer Discretionary | Spending more sensitive to higher prices |
| XLP | Consumer Staples | Essential spending as a defensive comparison |
A $600 fund and a $200 fund can’t be meaningfully compared by raw price. Instead, I rebased each fund to its own starting point and plotted the percentage change from there. This lets readers compare how much each fund moved relative to its starting point.
Someone might understand the headline “Trump announces tariffs” without knowing what a reciprocal tariff, ETF, or USMCA is. Rather than adding a separate glossary, I embedded definitions directly into unfamiliar terms so readers could get context only when they needed it.
On April 2, the administration announced a reciprocal tariff on nearly every trading partner.
I kept the interaction consistent while changing the information inside. As the article asks more specific questions, the tooltips provide more specific information.
Six funds at once made the market chart unnecessarily difficult to read. It instead begins with SPY, then introduces relevant sectors as they enter the story. Once readers have that context, all six funds become available to filter and compare.
Discovering data journalism also influenced how I wanted the project to feel. I was inspired by The New York Times Upshot, where visualizations feel like part of the journalism rather than separate analytical tools. I borrowed from that editorial language.
What was the market doing before Liberation Day?
A data story following trade policy from political headlines to the stock market
Cormorant Garamond for narrativeI had to decide:
Data journalism brought those considerations together, using visualization, writing, and interactivity to shape how someone moves through a layered story.