File size: 32,945 Bytes
d16b35e f2f6c26 30c92e1 f2f6c26 30c92e1 f2f6c26 d16b35e a0ed0f4 d16b35e 8092faa 10f3532 8092faa d16b35e b2ca17a eb24bd8 d16b35e 2129e5e d16b35e eb61b5d 15bdd8d d16b35e 15bdd8d 30c92e1 15bdd8d eb61b5d d16b35e eb61b5d d16b35e eb61b5d d16b35e eb61b5d d16b35e eb61b5d d16b35e eb61b5d d16b35e eb61b5d d16b35e 15bdd8d eb61b5d 15bdd8d eb61b5d d16b35e 15bdd8d d16b35e eb61b5d d16b35e 15bdd8d d16b35e 15bdd8d d16b35e 15bdd8d d16b35e |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>🔮 Mapping Nieman Lab's 2025 Journalism Predictions</title>
<script src="libs/d3.min.js"></script>
<script src="libs/plot.umd.min.js"></script>
<style>
body {
margin: 0;
font-family: Arial, sans-serif;
}
#viz {
width: 100%;
height: 67vh;
position: relative;
overflow: hidden;
}
@media (max-width: 768px) {
#viz {
height: 100vh;
}
}
#popup {
display: none;
position: absolute;
background: white;
border: 1px solid #ccc;
padding: 15px;
border-radius: 4px;
box-shadow: 0 2px 10px rgba(0,0,0,0.1);
max-width: 400px;
z-index: 1000;
font-size: 14px;
line-height: 1.4;
pointer-events: auto;
}
h1 {
color: #1a1a1a;
margin-bottom: 20px;
}
.intro {
max-width: 800px;
margin: 0 auto 40px;
text-align: center;
line-height: 1.6;
color: #374151;
}
.popup-headline {
font-weight: bold;
margin-bottom: 8px;
}
.popup-author {
color: #666;
margin-bottom: 8px;
}
.popup-url {
color: #0066cc;
word-break: break-all;
}
#note {
font-size: 10px;
color: #555;
text-align: center;
margin-top: auto; /* Pushes the note to the bottom */
padding: 5px;
background-color: #f8f8f8;
border-top: 1px solid #ddd;
}
</style>
</head>
<body>
<div class="intro">
<h1>🔮 Mapping Nieman Lab's 2025 Journalism Predictions</h1>
<p>This interactive visualization maps over <a href="https://www.niemanlab.org/collection/predictions-2025/" target="_blank">100 predictions from Nieman Lab contributors</a> about the future of journalism in the coming year, clustered by theme using natural language processing. Click on the points to read the original article and ❤️ this Space for updates with new predictions.</p>
</div>
<div id="viz">
<div id="popup"></div>
</div>
<div id="note">
<p>
Content from Nieman Lab is shared under a Creative Commons license.
Visualization code adapted from Hugging Face team's <a href="https://github.com/huggingface/text-clustering" target="_blank">Text Clustering example</a> and <a href="https://maartengr.github.io/BERTopic/index.html" target="_blank">BERTopic documentation</a>.
</p>
</div>
<script>
const pointsData = [{"x": 3.68623423576355, "y": 3.503188371658325, "topic": -1, "headline": "A generation of journalists moves on", "author": "Meena Thiruvengadam", "url": "https://www.niemanlab.org/2024/12/a-generation-of-journalists-moves-on/"}, {"x": 2.5248708724975586, "y": 1.2917379140853882, "topic": 4, "headline": "A new generation of knowledge management tools", "author": "Jeremy Gilbert", "url": "https://www.niemanlab.org/2024/12/a-new-generation-of-knowledge-management-tools/"}, {"x": 2.2359769344329834, "y": 3.026575803756714, "topic": -1, "headline": "A renewed appetite for print", "author": "Aimee Rinehart", "url": "https://www.niemanlab.org/2024/12/a-renewed-appetite-for-print/"}, {"x": 3.4690115451812744, "y": 2.504434823989868, "topic": -1, "headline": "Accommodating journalists is in \u2014 or you\u2019re out", "author": "Rachel S. Hunt", "url": "https://www.niemanlab.org/2024/12/accommodating-journalists-is-in-or-youre-out/"}, {"x": 2.943875551223755, "y": 1.5830992460250854, "topic": -1, "headline": "Action over analysis", "author": "Meredith Artley", "url": "https://www.niemanlab.org/2024/12/action-over-analysis/"}, {"x": 1.553125023841858, "y": -0.05639424920082092, "topic": 0, "headline": "Adaptive partnerships in the AI data marketplace", "author": "Courtney Radsch", "url": "https://www.niemanlab.org/2024/12/adaptive-partnerships-in-the-ai-data-marketplace/"}, {"x": 1.6788288354873657, "y": 0.3361310660839081, "topic": 0, "headline": "Adjusting to a tech-heavy but code-light world", "author": "Daniel Trielli", "url": "https://www.niemanlab.org/2024/12/adjusting-to-a-tech-heavy-but-code-light-world/"}, {"x": 1.7549558877944946, "y": -0.4731222689151764, "topic": 0, "headline": "AI adoption matures in small and local newsrooms", "author": "Ernest Kung", "url": "https://www.niemanlab.org/2024/12/ai-adoption-matures-in-small-and-local-newsrooms/"}, {"x": 1.4280866384506226, "y": -0.256629079580307, "topic": 0, "headline": "AI companies grapple with what it means to be creators of news", "author": "Maggie Harrison Dupr\u00e9", "url": "https://www.niemanlab.org/2024/12/ai-companies-grapple-with-what-it-means-to-be-creators-of-news/"}, {"x": 4.64277458190918, "y": 2.385575771331787, "topic": -1, "headline": "AI inspires innovation in journalism education", "author": "Cindy Royal", "url": "https://www.niemanlab.org/2024/12/ai-inspires-innovation-in-journalism-education/"}, {"x": 1.8387401103973389, "y": -0.31161072850227356, "topic": 0, "headline": "AI revolutionizes access to multilingual content", "author": "Benjamin Morales Mel\u00e9ndez", "url": "https://www.niemanlab.org/2024/12/ai-revolutionizes-access-to-multilingual-content/"}, {"x": 2.434694766998291, "y": -0.23848223686218262, "topic": 0, "headline": "AI turns news into a conversation", "author": "Nikita Roy", "url": "https://www.niemanlab.org/2024/12/ai-turns-news-into-a-conversation/"}, {"x": 3.4006199836730957, "y": 4.778074741363525, "topic": 1, "headline": "All eyes are on Brazil", "author": "Natalia Viana", "url": "https://www.niemanlab.org/2024/12/all-eyes-are-on-brazil/"}, {"x": 2.7846906185150146, "y": 4.419948577880859, "topic": 1, "headline": "An authoritarian anti-journalism playbook", "author": "Benjamin Toff", "url": "https://www.niemanlab.org/2024/12/an-authoritarian-anti-journalism-playbook/"}, {"x": 1.5648119449615479, "y": -0.04692254215478897, "topic": 0, "headline": "Antitrust and AI news converge and get local", "author": "Karina Montoya", "url": "https://www.niemanlab.org/2024/12/antitrust-and-ai-news-converge-and-get-local/"}, {"x": 1.456211805343628, "y": 0.8497368097305298, "topic": 4, "headline": "B2B media shifts from content to solutions", "author": "Jay Lauf", "url": "https://www.niemanlab.org/2024/12/b2b-media-shifts-from-content-to-solutions/"}, {"x": 1.215250015258789, "y": 3.247711181640625, "topic": 2, "headline": "Back to the bundle", "author": "Ben Smith", "url": "https://www.niemanlab.org/2024/12/back-to-the-bundle/"}, {"x": 2.7915902137756348, "y": 4.060944080352783, "topic": 1, "headline": "Blocking out the audience\u2019s siren song", "author": "Jonas Kaiser", "url": "https://www.niemanlab.org/2024/12/blocking-out-the-audiences-siren-song/"}, {"x": 2.0779271125793457, "y": 0.7353351712226868, "topic": -1, "headline": "Bluesky is just the beginning", "author": "Ethan Toven-Lindsey", "url": "https://www.niemanlab.org/2024/12/bluesky-is-just-the-beginning/"}, {"x": 3.58499813079834, "y": 2.7517635822296143, "topic": -1, "headline": "Breaking old habits", "author": "Andrea Faye Hart", "url": "https://www.niemanlab.org/2024/12/breaking-old-habits/"}, {"x": 2.3669445514678955, "y": 2.6298158168792725, "topic": 5, "headline": "Communities relearn the habits of local news", "author": "Sam Mintz", "url": "https://www.niemanlab.org/2024/12/communities-relearn-the-habits-of-local-news/"}, {"x": 3.167238712310791, "y": 3.756078004837036, "topic": -1, "headline": "Conflict of interest norms will shift", "author": "Kaitlin C. Miller", "url": "https://www.niemanlab.org/2024/12/conflict-of-interest-norms-will-shift/"}, {"x": 3.098395586013794, "y": 5.109126567840576, "topic": 1, "headline": "Covering Trump 2.0, now with less Trump", "author": "Joshua P. Darr", "url": "https://www.niemanlab.org/2024/12/covering-trump-2-0-now-with-less-trump/"}, {"x": 1.4042561054229736, "y": 0.4858998954296112, "topic": -1, "headline": "Data and context makes a comeback", "author": "Robin Kwong", "url": "https://www.niemanlab.org/2024/12/data-and-context-makes-a-comeback/"}, {"x": 1.3287885189056396, "y": 0.2977237403392792, "topic": 0, "headline": "Declaring platform independence", "author": "Jason Koebler", "url": "https://www.niemanlab.org/2024/12/declaring-platform-independence/"}, {"x": 2.140462636947632, "y": -0.6642709970474243, "topic": 0, "headline": "Divergent paths for journalism\u2019s future with AI", "author": "Alfred Hermida", "url": "https://www.niemanlab.org/2024/12/divergent-paths-for-journalisms-future-with-ai/"}, {"x": 2.787271022796631, "y": 2.1186702251434326, "topic": 4, "headline": "Embrace the barbell", "author": "Millie Tran", "url": "https://www.niemanlab.org/2024/12/embrace-the-barbell/"}, {"x": 4.012465953826904, "y": 2.8803584575653076, "topic": -1, "headline": "Embracing influencers as allies", "author": "Marlon A. Walker", "url": "https://www.niemanlab.org/2024/12/embracing-influencers-as-allies/"}, {"x": 2.7748429775238037, "y": 4.814492225646973, "topic": 1, "headline": "Focus on the people who elect populists", "author": "Francesco Zaffarano", "url": "https://www.niemanlab.org/2024/12/focus-on-the-people-who-elect-populists/"}, {"x": 2.019266128540039, "y": -0.18187880516052246, "topic": 0, "headline": "Get ready for the AI-driven world of news", "author": "Gina Chua", "url": "https://www.niemanlab.org/2024/12/get-ready-for-the-ai-driven-world-of-news/"}, {"x": 2.636654853820801, "y": 3.4752390384674072, "topic": -1, "headline": "How do we cover \u201cpeople like me\u201d?", "author": "Tania L. Montalvo", "url": "https://www.niemanlab.org/2024/12/how-do-we-cover-people-like-me/"}, {"x": 4.299729824066162, "y": 3.125300645828247, "topic": 3, "headline": "Humanness > authenticity", "author": "Val\u00e9rie B\u00e9lair-Gagnon", "url": "https://www.niemanlab.org/2024/12/humanness-authenticity/"}, {"x": 1.9293971061706543, "y": 2.124225616455078, "topic": -1, "headline": "Impact investment enters the chat", "author": "Adam Thomas", "url": "https://www.niemanlab.org/2024/12/impact-investment-enters-the-chat/"}, {"x": 1.6781424283981323, "y": 3.889058828353882, "topic": 2, "headline": "Influencers become journalists", "author": "Jessica Maddox", "url": "https://www.niemanlab.org/2024/12/influencers-become-journalists/"}, {"x": 3.156911849975586, "y": 2.864645481109619, "topic": -1, "headline": "Investing in the disability beat", "author": "James Salanga", "url": "https://www.niemanlab.org/2024/12/investing-in-the-disability-beat/"}, {"x": 3.118644952774048, "y": 2.9437448978424072, "topic": 5, "headline": "Journalism as a social service", "author": "Simon Galperin", "url": "https://www.niemanlab.org/2024/12/journalism-as-a-social-service/"}, {"x": 4.755356788635254, "y": 2.677163600921631, "topic": 3, "headline": "Journalism education leads the change we seek", "author": "Mira Lowe", "url": "https://www.niemanlab.org/2024/12/journalism-education-leads-the-change-we-seek/"}, {"x": 4.718067169189453, "y": 2.6366186141967773, "topic": 3, "headline": "Journalism educators unite", "author": "Amy Schmitz Weiss", "url": "https://www.niemanlab.org/2024/12/journalism-educators-unite/"}, {"x": 3.540827512741089, "y": 4.539740562438965, "topic": 1, "headline": "Journalism faces a reckoning, in Soviet style", "author": "Izabella Kaminska", "url": "https://www.niemanlab.org/2024/12/journalism-faces-a-reckoning-in-soviet-style/"}, {"x": 1.8075262308120728, "y": 3.551682949066162, "topic": 2, "headline": "Journalism has its Kendrick Lamar year", "author": "Delano Massey", "url": "https://www.niemanlab.org/2024/12/journalism-has-its-kendrick-lamar-year/"}, {"x": 3.5100533962249756, "y": 4.226345539093018, "topic": -1, "headline": "Double down on journalistic independence", "author": "Amy Mitchell", "url": "https://www.niemanlab.org/2024/12/journalism-today-is-a-process-that-starts-with-journalistic-independence/"}, {"x": 1.396511435508728, "y": -0.5310359597206116, "topic": 0, "headline": "Journalists build the AI tools they actually want to use", "author": "Retha Hill", "url": "https://www.niemanlab.org/2024/12/journalists-build-the-ai-tools-they-actually-want-to-use/"}, {"x": 2.7958152294158936, "y": 3.8353874683380127, "topic": -1, "headline": "Journalists embrace transparency about the business side", "author": "Jacob L. Nelson", "url": "https://www.niemanlab.org/2024/12/journalists-embrace-transparency-about-the-business-side/"}, {"x": 3.1253905296325684, "y": 4.6627678871154785, "topic": 1, "headline": "Journalists explain legislative procedure", "author": "Nik Usher", "url": "https://www.niemanlab.org/2024/12/journalists-explain-legislative-procedure/"}, {"x": 4.096528053283691, "y": 3.306628465652466, "topic": 3, "headline": "Journalists fight digital decay", "author": "Basile Simon", "url": "https://www.niemanlab.org/2024/12/journalists-fight-digital-decay/"}, {"x": 2.3905889987945557, "y": 2.7802317142486572, "topic": 5, "headline": "Lessons learned in The Building of Lost Causes", "author": "Linda Solomon Wood", "url": "https://www.niemanlab.org/2024/12/lessons-learned-in-the-building-of-lost-causes/"}, {"x": 1.42769455909729, "y": 3.3844382762908936, "topic": 2, "headline": "Local collaboration follows contraction", "author": "Larry Ryckman", "url": "https://www.niemanlab.org/2024/12/local-collaboration-follows-contraction/"}, {"x": 1.4550848007202148, "y": 3.141420364379883, "topic": 2, "headline": "Local media gets its swagger back", "author": "Fran Wills", "url": "https://www.niemanlab.org/2024/12/local-media-gets-its-swagger-back/"}, {"x": 2.426140308380127, "y": 3.717825174331665, "topic": 1, "headline": "Maybe we really are done with news?", "author": "Matt Carlson", "url": "https://www.niemanlab.org/2024/12/maybe-we-really-are-done-with-news/"}, {"x": 1.4029443264007568, "y": 0.5376128554344177, "topic": 0, "headline": "Media companies will love their websites a lot less", "author": "Jonathan Hunt", "url": "https://www.niemanlab.org/2024/12/media-companies-will-love-their-websites-a-lot-less/"}, {"x": 2.7796266078948975, "y": 5.190230369567871, "topic": 1, "headline": "Media\u2019s acquiescence to Trump will fail", "author": "Noah Shachtman", "url": "https://www.niemanlab.org/2024/12/medias-acquiescence-to-trump-will-fail/"}, {"x": 4.727552890777588, "y": 2.8071556091308594, "topic": 3, "headline": "More newsrooms will partner with student journalists", "author": "Sumi Aggarwal", "url": "https://www.niemanlab.org/2024/12/more-newsrooms-will-partner-with-student-journalists/"}, {"x": 2.180946111679077, "y": 0.26114919781684875, "topic": 0, "headline": "New dimensions for news storytelling", "author": "Kawandeep Virdee", "url": "https://www.niemanlab.org/2024/12/new-dimensions-for-news-storytelling/"}, {"x": 2.2870888710021973, "y": 1.385071039199829, "topic": 4, "headline": "News jumps off the page", "author": "Annemarie Dooling", "url": "https://www.niemanlab.org/2024/12/news-jumps-off-the-page/"}, {"x": 1.2396306991577148, "y": 0.2084752768278122, "topic": -1, "headline": "News websites hit an evolutionary dead end", "author": "Simon Allison", "url": "https://www.niemanlab.org/2024/12/news-websites-hit-an-evolutionary-dead-end/"}, {"x": 2.3563215732574463, "y": 1.3111847639083862, "topic": 4, "headline": "Newsroom planning goes silo-free", "author": "Kendall Trammell", "url": "https://www.niemanlab.org/2024/12/newsroom-planning-goes-silo-free/"}, {"x": 1.98489248752594, "y": 1.9534194469451904, "topic": 4, "headline": "Newsrooms break new ground in AI", "author": "Chase Davis", "url": "https://www.niemanlab.org/2024/12/newsrooms-break-new-ground-in-ai/"}, {"x": 3.4913430213928223, "y": 4.386300563812256, "topic": 1, "headline": "Newsrooms fight back against criminalization", "author": "Jos\u00e9 Zamora", "url": "https://www.niemanlab.org/2024/12/newsrooms-fight-back-against-criminalization/"}, {"x": 3.387619972229004, "y": 4.120192050933838, "topic": 1, "headline": "Newsrooms reinvent their political journalism", "author": "Alexandra Borchardt", "url": "https://www.niemanlab.org/2024/12/newsrooms-reinvent-their-political-journalism/"}, {"x": 2.950793981552124, "y": 4.15198278427124, "topic": 1, "headline": "Newsrooms will keep losing their conservative audiences", "author": "Jonathan Stray", "url": "https://www.niemanlab.org/2024/12/newsrooms-will-keep-losing-their-conservative-audiences/"}, {"x": 3.2595901489257812, "y": 2.316451072692871, "topic": 5, "headline": "No more baby steps in fixing crime coverage", "author": "Cassie Owens", "url": "https://www.niemanlab.org/2024/12/no-more-baby-steps-in-fixing-crime-coverage/"}, {"x": 1.8516250848770142, "y": 2.968437910079956, "topic": -1, "headline": "Outlets pivot to promoting action, not just news", "author": "Anita Li", "url": "https://www.niemanlab.org/2024/12/outlets-pivot-to-promoting-action-not-just-news/"}, {"x": 2.5268280506134033, "y": -0.34073981642723083, "topic": 0, "headline": "Play with AI like your career depends on it (it does)", "author": "Marie Gilot", "url": "https://www.niemanlab.org/2024/12/play-with-ai-like-your-career-depends-on-it-it-does/"}, {"x": 1.386070728302002, "y": 3.6753852367401123, "topic": 2, "headline": "Podcasting becomes the primary strategy, not an afterthought", "author": "Joni Deutsch", "url": "https://www.niemanlab.org/2024/12/podcasting-becomes-the-primary-strategy-not-an-afterthought/"}, {"x": 2.807302713394165, "y": 1.886401653289795, "topic": -1, "headline": "Prediction markets go mainstream", "author": "Taylor Lorenz", "url": "https://www.niemanlab.org/2024/12/prediction-markets-go-mainstream/"}, {"x": 3.0588486194610596, "y": 3.5520148277282715, "topic": -1, "headline": "Prepare for the unthinkable", "author": "Jennifer Brandel", "url": "https://www.niemanlab.org/2024/12/prepare-for-the-unthinkable/"}, {"x": 1.5960733890533447, "y": 3.5221080780029297, "topic": 2, "headline": "Progressive media at a crossroads", "author": "Anthony Nadler", "url": "https://www.niemanlab.org/2024/12/progressive-media-at-a-crossroads/"}, {"x": 1.436760425567627, "y": 3.3063714504241943, "topic": 2, "headline": "Public media embraces its future", "author": "Kerri Hoffman", "url": "https://www.niemanlab.org/2024/12/public-media-embraces-its-future/"}, {"x": 1.7326470613479614, "y": 3.4025256633758545, "topic": 2, "headline": "Public media reconciles its past with the present", "author": "Kristen Muller", "url": "https://www.niemanlab.org/2024/12/public-media-reconciles-its-past-with-the-present/"}, {"x": 1.7326139211654663, "y": -0.10127607733011246, "topic": 0, "headline": "Publishers find the AI era not all that lucrative", "author": "Rasmus Kleis Nielsen", "url": "https://www.niemanlab.org/2024/12/publishers-find-the-ai-era-not-all-that-lucrative/"}, {"x": 2.8028368949890137, "y": 3.171997547149658, "topic": -1, "headline": "Publishers reckon with dark patterns", "author": "Jasmine McNealy", "url": "https://www.niemanlab.org/2024/12/publishers-reckon-with-dark-patterns/"}, {"x": 1.5251433849334717, "y": -0.6197857856750488, "topic": 0, "headline": "Put AI at the beginning, not at the end", "author": "Ole Rei\u00dfmann", "url": "https://www.niemanlab.org/2024/12/put-ai-at-the-beginning-not-at-the-end/"}, {"x": 2.273069143295288, "y": 1.6632107496261597, "topic": -1, "headline": "Readers will seek out well-moderated spaces", "author": "Scott Lamb", "url": "https://www.niemanlab.org/2024/12/readers-will-seek-out-well-moderated-spaces/"}, {"x": 3.0081465244293213, "y": 5.2444586753845215, "topic": 1, "headline": "Religious-sounding language will be everywhere in 2025", "author": "Whitney Phillips", "url": "https://www.niemanlab.org/2024/12/religious-sounding-language-will-be-everywhere-in-2025/"}, {"x": 3.1310536861419678, "y": 3.347532272338867, "topic": -1, "headline": "Science journalism becomes plain old journalism", "author": "Siri Carpenter", "url": "https://www.niemanlab.org/2024/12/science-journalism-becomes-plain-old-journalism/"}, {"x": 1.680755853652954, "y": 3.8936710357666016, "topic": 2, "headline": "Sports journalists break away from access-based journalism", "author": "Brian Moritz", "url": "https://www.niemanlab.org/2024/12/sports-journalists-break-away-from-access-based-journalism/"}, {"x": 2.245842695236206, "y": 2.210665225982666, "topic": 5, "headline": "Story budgets get reshaped to coax the disengaged", "author": "Jody Brannon", "url": "https://www.niemanlab.org/2024/12/story-budgets-get-reshaped-to-coax-the-disengaged/"}, {"x": 1.4994430541992188, "y": 1.1744489669799805, "topic": -1, "headline": "Taking lessons from independent bookstores", "author": "Eric Nuzum", "url": "https://www.niemanlab.org/2024/12/taking-lessons-from-independent-bookstores/"}, {"x": 4.363303184509277, "y": 3.0654985904693604, "topic": 3, "headline": "The darkness that democracy dies in is here", "author": "Carrie Brown", "url": "https://www.niemanlab.org/2024/12/the-darkness-that-democracy-dies-in-is-here/"}, {"x": 2.2038419246673584, "y": -0.7512913942337036, "topic": 0, "headline": "The distinct human writer becomes more essential", "author": "Mario Garc\u00eda", "url": "https://www.niemanlab.org/2024/12/the-distinct-human-writer-becomes-more-essential/"}, {"x": 2.6224491596221924, "y": 4.872861862182617, "topic": 1, "headline": "The federal attack on the press will trickle down locally", "author": "Katie Honan", "url": "https://www.niemanlab.org/2024/12/the-federal-attack-on-the-press-will-trickle-down-locally/"}, {"x": 4.303241729736328, "y": 3.457742214202881, "topic": 3, "headline": "The line between activism and journalism breaks", "author": "Hafsa Maqsood", "url": "https://www.niemanlab.org/2024/12/the-line-between-activism-and-journalism-breaks/"}, {"x": 3.0008506774902344, "y": 1.447888731956482, "topic": -1, "headline": "The longform renaissance", "author": "Geetika Rudra", "url": "https://www.niemanlab.org/2024/12/the-longform-renaissance/"}, {"x": 3.115023612976074, "y": 4.634903430938721, "topic": 1, "headline": "The media becomes an activist for democracy", "author": "Gideon Lichfield", "url": "https://www.niemanlab.org/2024/12/the-media-becomes-an-activist-for-democracy/"}, {"x": 4.137185096740723, "y": 3.8704967498779297, "topic": -1, "headline": "The media industry adopts an insurgent strategy", "author": "Saba Long", "url": "https://www.niemanlab.org/2024/12/the-media-industry-adopts-an-insurgent-strategy/"}, {"x": 2.7421724796295166, "y": 4.994019985198975, "topic": 1, "headline": "The media surrenders to Trump 2.0", "author": "Parker Molloy", "url": "https://www.niemanlab.org/2024/12/the-media-surrenders-to-trump-2-0/"}, {"x": 3.643988609313965, "y": 2.703531503677368, "topic": -1, "headline": "The moral injury epidemic", "author": "Andrew Losowsky", "url": "https://www.niemanlab.org/2024/12/the-moral-injury-epidemic/"}, {"x": 2.9918904304504395, "y": 4.674120903015137, "topic": 1, "headline": "The New York Times will hire a pro-Trump columnist", "author": "Matthew Pressman", "url": "https://www.niemanlab.org/2024/12/the-new-york-times-will-hire-a-pro-trump-columnist/"}, {"x": 0.9608303308486938, "y": 2.784249782562256, "topic": 2, "headline": "The podcast middle class will continue to shrink", "author": "Alex Sujong Laughlin", "url": "https://www.niemanlab.org/2024/12/the-podcast-middle-class-will-continue-to-shrink/"}, {"x": 1.3357559442520142, "y": 3.012587785720825, "topic": 2, "headline": "The print revival comes to news", "author": "Esther Kezia Thorpe", "url": "https://www.niemanlab.org/2024/12/the-print-revival-comes-to-news/"}, {"x": 2.55924391746521, "y": 4.155697822570801, "topic": -1, "headline": "The publisher is always right", "author": "Gabe Schneider", "url": "https://www.niemanlab.org/2024/12/the-publisher-is-always-right/"}, {"x": 2.063018798828125, "y": 3.1209709644317627, "topic": -1, "headline": "The rebirth of local news", "author": "Sarabeth Berman", "url": "https://www.niemanlab.org/2024/12/the-rebirth-of-local-news/"}, {"x": 2.4869766235351562, "y": 3.180321455001831, "topic": 5, "headline": "The rise of informal news networks", "author": "Heather Chaplin", "url": "https://www.niemanlab.org/2024/12/the-rise-of-informal-news-networks/"}, {"x": 1.9863874912261963, "y": 1.1947556734085083, "topic": 4, "headline": "The year newsrooms tackle their structural issues", "author": "Nick Petrie", "url": "https://www.niemanlab.org/2024/12/the-year-newsrooms-tackle-their-structural-issues/"}, {"x": 1.4401533603668213, "y": -0.35003459453582764, "topic": 0, "headline": "The year we stop talking about \u201cAI\u201d", "author": "Burt Herman", "url": "https://www.niemanlab.org/2024/12/the-year-we-stop-talking-about-ai/"}, {"x": 2.9596524238586426, "y": 5.210065841674805, "topic": 1, "headline": "There\u2019s no \u201cTrump Bump\u201d (and that\u2019s good!)", "author": "Hillary Frey", "url": "https://www.niemanlab.org/2024/12/theres-no-trump-bump-and-thats-good/"}, {"x": 1.409725546836853, "y": 2.7081401348114014, "topic": 2, "headline": "To hell with algorithms", "author": "Rodney Gibbs", "url": "https://www.niemanlab.org/2024/12/to-hell-with-algorithms/"}, {"x": 2.030881404876709, "y": -0.2576357424259186, "topic": 0, "headline": "Using AI to make news more accessible", "author": "Chitranshu Tewari", "url": "https://www.niemanlab.org/2024/12/using-ai-to-make-news-more-accessible/"}, {"x": 3.439234972000122, "y": 3.2868292331695557, "topic": 1, "headline": "Watch your language", "author": "Doris Truong", "url": "https://www.niemanlab.org/2024/12/watch-your-language/"}, {"x": 2.8281993865966797, "y": 1.8477591276168823, "topic": 4, "headline": "We can\u2019t predict the future \u2014 but it\u2019s essential to plan for it", "author": "AX Mina", "url": "https://www.niemanlab.org/2024/12/we-cant-predict-the-future-but-its-essential-to-plan-for-it/"}, {"x": 2.3857457637786865, "y": -0.2101096212863922, "topic": 0, "headline": "We stop excusing the lack of accessibility in news", "author": "Joe Amditis", "url": "https://www.niemanlab.org/2024/12/we-stop-excusing-the-lack-of-accessibility-in-news/"}, {"x": 4.247597694396973, "y": 3.5565571784973145, "topic": 3, "headline": "We\u2019ll reach beyond our own lane", "author": "Sharon Moshavi", "url": "https://www.niemanlab.org/2024/12/well-reach-beyond-our-own-lane/"}, {"x": 2.5994222164154053, "y": 2.901196241378784, "topic": 5, "headline": "We\u2019ll rethink scale, trust, and our life\u2019s work", "author": "S. Mitra Kalita", "url": "https://www.niemanlab.org/2024/12/well-rethink-scale-trust-and-our-lifes-work/"}, {"x": 1.2203879356384277, "y": 0.7107078433036804, "topic": 0, "headline": "You\u2019ll need to care more about your value chain", "author": "Sam Guzik", "url": "https://www.niemanlab.org/2024/12/youll-need-to-care-more-about-your-value-chain/"}, {"x": 4.716219425201416, "y": 2.962329864501953, "topic": 3, "headline": "Young journalists will reimagine a better press", "author": "Christoph Mergerson", "url": "https://www.niemanlab.org/2024/12/young-journalists-will-reimagine-a-better-press/"}, {"x": 1.902227759361267, "y": 2.5794620513916016, "topic": -1, "headline": "Your Audience team is now your Creator team", "author": "Ryan Kellett", "url": "https://www.niemanlab.org/2024/12/your-audience-team-is-now-your-creator-team/"}];
const labelData = [{"x": 1.7994170188903809, "y": -0.15466168522834778, "label": " AI, news organizations, adoption", "topic": 0}, {"x": 3.0226552486419678, "y": 4.572046756744385, "label": " Politics, Trump Administration", "topic": 1}, {"x": 1.4709473848342896, "y": 3.347642421722412, "label": " Publishing industry, fragmentation", "topic": 2}, {"x": 4.269733238220215, "y": 3.066110372543335, "label": " Education, authenticity, frustration", "topic": 3}, {"x": 2.2764053344726562, "y": 1.494041919708252, "label": " Digital news transformation", "topic": 4}, {"x": 2.63828706741333, "y": 2.7089178562164307, "label": " Local news decline, trust, crisis", "topic": 5}];
// Create visualization function
function createVisualization() {
const container = d3.select("#viz");
// Set dynamic width and height for responsiveness
const width = window.innerWidth;
const isMobile = width < 768;
const height = isMobile ? window.innerHeight : window.innerHeight * 0.67;
// Adjust sizes based on device
const pointSize = isMobile ? 8 : 12;
const labelSize = isMobile ? 12 : 16;
const labelPadding = isMobile ? 4 : 8;
const plot = Plot.plot({
width: width,
height: height,
margin: isMobile ? 30 : 50,
style: {
background: "white",
fontSize: isMobile ? 10 : 12,
overflow: "visible"
},
color: {
scheme: "tableau10"
},
marks: [
Plot.dot(pointsData, {
x: "x",
y: "y",
fill: d => `topic${d.topic}`,
r: pointSize,
opacity: 0.6,
stroke: "white",
strokeWidth: 0.5
}),
Plot.text(labelData, {
x: "x",
y: "y",
text: "label",
fill: "black",
fontSize: labelSize,
fontWeight: "bold",
dx: 0,
dy: 0,
background: true,
backgroundPadding: labelPadding,
backgroundFill: "white",
backgroundOpacity: 0.9
})
],
x: {
axis: null
},
y: {
axis: null
}
});
container.node().appendChild(plot);
const popup = d3.select("#popup");
// Adjust popup styling for mobile
if (isMobile) {
popup.style("max-width", "280px")
.style("font-size", "12px");
}
// Function to update popup content and position
function updatePopup(circle) {
const index = Array.from(document.querySelectorAll('circle')).indexOf(circle);
const point = pointsData[index];
const topic = point.topic;
const topicLabel = labelData.find(l => l.topic === topic)?.label || 'Unknown Topic';
popup
.style("display", "block")
.html(`
<div class="popup-headline">${point.headline}</div>
<div class="popup-author">By ${point.author || 'Unknown Author'}</div>
<div class="popup-url">${point.url}</div>
<div style="margin-top: 8px"><strong>Topic:</strong> ${topicLabel}</div>
`);
const rect = circle.getBoundingClientRect();
const vizRect = document.getElementById("viz").getBoundingClientRect();
const popupRect = popup.node().getBoundingClientRect();
const windowWidth = window.innerWidth;
const windowHeight = window.innerHeight;
// Calculate initial position
let leftPos = rect.left - vizRect.left + rect.width/2;
let topPos = rect.top - vizRect.top - popupRect.height - 10;
// Adjust popup position for mobile
if (isMobile) {
// Center popup horizontally on mobile
leftPos = (windowWidth - popupRect.width) / 2;
// Position popup at fixed distance from top
topPos = 20;
} else {
// Desktop positioning logic
if (rect.left + popupRect.width > windowWidth) {
leftPos = windowWidth - popupRect.width - 20;
}
if (leftPos < 0) {
leftPos = 20;
}
if (topPos < 0) {
topPos = rect.top - vizRect.top + rect.height + 10;
}
}
popup
.style("left", leftPos + "px")
.style("top", topPos + "px");
}
// Handle clicks on points
d3.selectAll("circle")
.style("cursor", "pointer")
.on("click", function(event) {
event.stopPropagation();
updatePopup(this);
});
// Click anywhere else to close popup
document.addEventListener("click", function() {
popup.style("display", "none");
});
// Prevent popup from closing when clicking inside it
popup.node().addEventListener("click", function(event) {
event.stopPropagation();
});
}
// Wait for everything to be loaded and on window resize to adjust
window.addEventListener('load', createVisualization);
window.addEventListener('resize', function() {
d3.select("#viz").html('');
createVisualization();
});
</script>
</body>
</html> |