Last month the Philadelphia Inquirer published an article examining the geographic distribution of Teslas and Cybertrucks and whether or not your car is liberal or conservative. The interactive graphics focused more on a sortable table, which allowed you to find your vehicle type.
The sortable list offers users option by brand and body type—not model. But whilst the newspaper claims to include 11 million vehicles in Pennsylvania, its classifications are lacking. For example, I drive a Ford Focus hatchback, but the list includes only 1400 hatchbacks, of the Toyota four-door variety in the entire Commonwealth.
More interesting to me was the geographic map of Tesla electric vehicles and Cybertrucks. The screenshot below is of the Tesla.
The choropleth maps use shades of green to indicate the share of vehicles in the particular zip code. Teslas represent relatively small shares of the market across Pennsylvania, but their limited presence is concentrated in the more affluent communities surrounding the big cities of Philadelphia and Pittsburgh. Cybertrucks are even less popular in Pennsylvania and barely register statewide.
Overall the graphics work, but I wish the data was a bit more robust. I would be curious how political my vehicle choice is. Of course choice is relative here. I purchased my car back in 2010 and I cared little for the brand. I just wanted something small to drive and park in Chicago and that could lug cargo. Of course 2010 was a less polarised time when the outrages of the day centred upon tan suits.
Credit for the piece goes to Lizzie Mulvey and Dylan Purcell.
In my last post, I commented upon a graphic from the Philadelphia Inquirer where a min/max axis line would have been helpful. This post is a quick follow-up of sorts, because a week ago I flagged something similar for me to perhaps mention on Coffee Spoons. So here I shall mention away.
We have another graphic from the Inquirer in an article about the Philadelphia region’s oppressive humidity this summer. The chart presents its information straightforwardly—bars representing the percentage of hours wherein the dew point sat above 70ºF. Muggy. Muggy as hell. Because I guarantee you the heat in Hell is a humid one. None of the dry dessert heat.
Overall, the graphic works well. It is interactive so you can mouse over the bar and read the precise data point. I love that far more than the increasingly prevalent let’s-label-every-data-point-on-the-chart-and-distract-the-eyeball-from-the-actual-pattern-of-what-is-going-on approach.
This summer has been the third muggiest in Philadelphia in the last three-quarters of a century. The designer highlighted 2025 at the end of the series—not necessary, but I can live with it. But what then stands out are the two muggiest years—two very tall bars. But note that there is no axis line above them. No upper bound. Nothing to help inform the user what percentage point they approach.
I do not always use a maximum or minimum axis line, but usually the outlier has to be extreme, and in that case I will add extra lines around that point to give the user the vital context of scale. Otherwise, the outlier should be just a wee bit above or below the line. I thought I would find a relevant example in my work quickly, but it took nearly 20 minutes of reviewing old work to find one such example.
Here you can see in Figure 6 the pink line barely and briefly rises above the 80% maximum. The reader can see the value just pokes above 80% but was otherwise below it during the entire span of time. And that works great.
Again, this is a small critique of the mugginess chart, but I feel an axis line significantly helps the reader see just how muggy those summers were. Spoiler: nearly 54% of the time was “oppressive”.
To play devil’s advocate, perhaps if the article were not about how this is third muggiest summer, the designer could have skipped adding an axis line at 60% or so. But, because such the author placed such emphasis on the third-most bit, the graphic really would benefit from the context of how the 45% thus far for 2025 compares to the top-two summers.
For my longtime readers, you know that despite living in both Chicago and now Philadelphia, I am and have been since way back in 1999, a Boston Red Sox fan. And this week, the Carmine Hose make their biennial visit down I-95 to South Philadelphia.
And I will be there in person to watch.
This is the second series after the All-Star break and as much as I wish it were otherwise, the Red Sox are just not as good as the Phillies. The team my hometown supports is just better than the one for whom I root. The Sox are 54-47 with a .535 winning percentage and the Phillies are 56-43 with a .566 winning percentage. The Phillies have the better rotation, by far. And the Red Sox’ two best pitchers just threw out in Chicago whereas the Phillies’ best toe the rubber over the next three nights.
But…the Boston baseball bats are a bit better and the Bank is a bandbox. Consequently I do not want to say the Phillies sweep the Sox, but my prediction is it will be tough for the Sox.
How does this connect to information design and data visualisation? Last week as the “second half” began, my local rag, the Philadelphia Inquirer, published an article examining the Phillies’ season to date and their road up ahead. It included a couple of graphics I wanted to share, because I found them a nice addition to the type of article usually devoid of such visual pieces.
The first piece looked at the Phillies’ performance relative to recent teams.
You can see the 2025 club is out performing the 2022 and 2023 editions of the team. I have a few critiques, but overall I enjoyed the graphic. I think the heavier stroke and the colour change for 2025 works…but are both necessary? Or at least to the extent the designer chose? And which line is which year?
The chart is too visually busy with too many bits and bobs clamouring for attention. The heaviness of the blue stroke works because the chart needs the loudness. But move the year labels to a consistent location—which, once established helps the user find similar information—and remove the data label annotations—the precise number of games over .500 should be clear through the axis labelling. If I make a couple quick edits in Photoshop to the image, you end up with something like this.
Again, an overall good graphic, but one with just a few tweaks to quiet the overall piece allows the user to more clearly identify the visual pattern—that the Phillies are good and better than two of their three most recent iterations.
The second piece was even better. It looked at the Phillies’ forthcoming opponents, which at the time of publication first included the Los Angeles Angels before the Sox. (For what it may be worth, the Angels won two of three.)
A different graphic, the same critique: overall good, but visually cluttered. Here I revisit the chart, but move some elements around to clear the chart’s visual space of clutter to emphasise the visual pattern in the chart.
I left the annotated point about the Phillies’ winning percentage, because I do think annotations work. But when a chart is full of annotations, the annotations become the story, not the graphic. And if that is the story, then a table or factettes become a better visual solution to the problem.
I will add I do not love how low the line for the opponents falls below the chart’s minimum axis. I probably would have extended the chart to something like .750 and .250, but it is far from the worst sin I see these days. (I keep thinking of writing something about the decline of the quality of data visualisation and information design in recent years, but that feels more akin to a polemical essay than a short blog post.)
Big takeaway, I like seeing my baseball articles with nice data visualisation. It heralds back to a couple of years ago when outlets routinely published such pieces. Baseball especially benefits from data visualisation because the game generates massive amounts of data both within each game and the collective 162-game season.
Good on the Inquirer for this article. I do not usually read the Sports section, because I am not a Philadelphia sports fan, but maybe I will read a bit more of the Phillies coverage if they include visual content like this.
Credit for the original pieces goes to Chris A. Williams. The edits are mine.
Thoroughbred racing is big business. And Philadelphia’s Parx Casino owns a racing track that, in a recent article in the Philadelphia Inquirer, has seen a number of horse deaths. The article includes a single graphic worth noting, a bar chart showing the thoroughbred death rate. The graphic contrasts rising deaths at Parx with a national trend of declining deaths.
Traditionally rate statistics are shown using dots or line. The idea is that a bar represents counting stats, i.e. how many total horses died. I understand the coloured bars present a more visually compelling graphic on the page, and so I can buy that reason if you are selling it.
Labelling each datapoint, however, with a grey text label above the bar remains unnecessary. They create sparkling, distracting grey baubles above the important blue bars. If you need the specificity to the hundredths degree, use a table. This graphic is also interactive. The mouseover state is where a specific number can be provided, adding an additional layer or level of depth in a progressive disclosure of information.
Well, I’ve had to update this since I first wrote, but had not yet published, this article. Because this morning police captured Danelo Cavalcante, the murderer on the lam after escaping from Chester County Prison, with details to follow later today.
This story fascinates me because it understandably made headlines in Philadelphia, from which the prison is only perhaps 30–40 miles, but the national and even international coverage astonished me. Maybe not the initial article, but the days-long coverage certainly seemed excessive when we had much larger problems or notable events occurring throughout the world.
That brings me to this quick comparison of these two maps. The first is from the local paper, the Philadelphia Inquirer. It is a screenshot in two parts, the first the actual map and the second the accompanying timeline.
The Inquirer mapThe timeline from the Inquirer
Then we have the BBC and their map of the story:
The BBC version
Both maps use light greys and neutral colours to ground the reader’s experience, his or her welcome to the world of southeastern Pennsylvania. The Inquirer uses a beige and a white focus for Chester County and the BBC omits county distinctions and uses white for rural and grey for built-up areas around Philadelphia.
Both maps use red numbers in their timeline sections to sequence the events, though the Inquirer’s is more extensive in its details and links the red events to red map markers.
The Inquirer leans heavily on local roads and highways with lines of varying width in white with thin outlines. Whereas the BBC marks only significant roads as thin blue lines.
The Inquirer’s map adds a lot of geographical context, especially for an audience fastidiously following the situation. And the following makes sense given all the local closures and anxiety—though I’m of the opinion a significant bit of those closures and anxiety were unwarranted. But for a reader in London, Toronto, or Melbourne, does anyone really need to see Boot Road? Strasburg Road? Even Route 30? Or the Route 30 Bypass (at Route 100, hi, Mum)? Not really, and so the omission of many of the local roads makes sense.
I would keep the roads relevant to the story of the search or the capture, for example Routes 23 and 1, and places relevant, for example Longwood Gardens and South Coventry. Here the BBC perhaps goes too far in omitting any place labels aside from Philadelphia, which is itself borderline out of place.
What I like about the BBC’s map, however, is the use of the white vs. grey to denote rural vs. built-up areas, a contextual element the Inquirer lacks. Over the last two weeks I have heard from city folks here in Philadelphia, why can’t the cops capture Cavalcante in Chester County? Well, if you’ve ever driven around the area where he initially roamed, it’s an area replete with wooded hills and creeks and lots of not-so-dense rich people homes. We don’t yet know where he was finally captured, but in Phoenixville he was spotted on camera because it’s an actual borough (I’m pretty certain it’s incorporated) with a walkable downtown. It’s dense with people. And not surprisingly the number of spottings increased as he moved into a denser area.
The Inquirer’s map, however, doesn’t really capture that. It’s just some lines moving around a map with some labels. The BBC’s map, though imperfect because the giant red box obscures a lot of the initial search area, at least shows us how Cavalcante evaded capture in a white thus rural, less-dense area before being seen in a grey thus built-up dense area.
All-in-all, both are good enough. But I wish somebody had managed to combine both into one. Less road map than the Inquirer’s, but more context and grounding than the BBC.
Credit for the Inquirer piece goes to John Duchneskie.
Credit for the BBC piece goes to the BBC graphics department.
I woke up this morning and the breaking news was that the local basketball team, the 76ers, proposed a new downtown arena just four blocks from my office. The article included a graphic showing the precise location of the site.
I have no doubt whatsoever this won’t impact my commutes.
For our purposes this is just a little locator map in a larger article. But I wanted to draw attention to two things in an otherwise nice map. First, if you look carefully on the left you can see the label for the Broad Street Line placed over the actual railway line, which is what makes it so difficult to read. I probably would have shifted the label to the left to increase its legibility.
Second, and this is a common for maps of Philadelphia, is the actual north-south route of said Broad Street Line, one of the three subway lines running in the city. (You all know of the Broad Street and Market–Frankford Elevated, but don’t forget the PATCO.) If you look closely enough it appears to run directly underneath Broad Street in a straight line. But where it passes beneath City Hall you will see the little white dot locating the station is placed to the left of the railway line.
Why is that?
Well when it was built, Philadelphia’s City Hall was the tallest habitable building in the world. Whilst clearly supplanted in that record, the building remains the largest free-standing masonry building in the world. But that means it has deep and enormous foundations. Foundations that could not be disturbed when the city was running a subway line directly beneath Broad Street.
Consequently, the Broad Street Line is not actually straight—ride it heading south into City Hall Station and you’ll notice the sharp turn both in its bend and the loud screeching of metal. The line bends around parts of the building’s foundations, sharply on the north side and more gently on the south side. So the actual station is still beneath City Hall, but offset to the west.
But most of the time it’s easier just to depict the route as a straight line running directly beneath City Hall.
The other day I was reading an article about the coming property tax rises in Philadelphia. After three years—has anything happened in those three years?—the city has reassessed properties and rates are scheduled to go up. In some neighbourhoods by significant amounts. I went down the related story link rabbit hole and wound up on a Philadelphia Inquirerarticle I had missed from early May that included a map of just where those increases were largest. The map itself was nothing crazy.
A pretty standard map here.
We have a choropleth with city zip codes coloured by the percentage increase. I was thrown for a bit of a loop as I immediately perceived the red representing lower values and green higher values, the standard green to red palette. But given that higher values are “bad”, I can live red representing bad and sitting at the top of the spectrum.
I filed it away to review later, but when I returned I visited on my mobile phone. And what I saw broadly looked the same, but there was a disconcerting difference. Take a look at the legend.
One little difference…
You can see that instead of running vertically like it did on the desktop, now the legend runs horizontally across the bottom. In and of itself, that’s not the issue. Though I do wonder if this particular legend could have still worked in roughly the same spot/alignment given the geographic shape of Philadelphia along the Delaware River.
Rather look at the order. We go from the higher, positive values on the left to the negative, lower values on the right. When you read the legend, this creates some odd jumps. For example, we move from “+32% to +49%” then to “+15% to +31%”. We would normally say something to the point of the increase bins moving from “+15% to +31%” then to “+32% to +49%”. In other words, the legend itself is a continuum.
The fix for this would be to simply flip the running order of the legend. Put the lower values on the left and then step up to the right. For a quick comparison, I visited the New York Times website and pulled up the first graphic I could find that looked like a choropleth. Here we have a map of the dangerous temperatures across the United States.
Definitely staying inside today.
Note how here the New York Times also runs their legend horizontally below the graphic. But instead of running high-to-low like in the Inquirer, the Times runs low-to-high, making for a more natural and intuitive legend.
This kind of simple ordering change would make the Inquirer’s map that much better.
Credit for the Inquirer piece goes to Kasturi Pananjady and John Duchneskie.
Credit for the Times piece goes to Matthew Bloch, Lazaro Gamio, Zach Levitt, Eleanor Lutz, and John-Michael Murphy.
Earlier this week I read an article in the Philadelphia Inquirer about the political prospects of some of the candidates for the open US Senate seat for Pennsylvania, for which I and many others will be voting come November. But before I get to vote on a candidate, members of the political parties first get to choose whom they want on the ballot. (In Pennsylvania, independent voters like myself are ineligible to vote in party primaries.)
This year the Republican Party has several candidates running and one of them you may have heard of: Dr. Oz. Yeah, the one from television. And while he is indeed the front runner, he is not in front by much as the article explains. Indeed, the race largely had been a two-person contest between Oz and David McCormick until recently when Kathy Barnette pulled just about even with the two.
In fact, according to a recent poll the three candidates are all statistically tied in that they all fall within the margin of error for victory. And that brings us to the graphic from the article.
It would be funny to see a candidate finish with negative vote share.
Conceptually this is a pretty simple bar chart with the bar representing the share of the support of those polled. But I wanted to point out how the designer chose to represent the margin of error via hatched shading to both sides of the ends of the red bar.
In some cases the hatch job does not work for me, particularly with those smaller candidates where the bar goes negative. I would have grave reservations about the vote should any candidate win a negative share of the vote. 0% perhaps, but negative? No. I also don’t think the grey hatching works as well over the grey bar in particular and to a lesser degree the red.
I have often thought that these sorts of charts should use some kind of box plot approach. So this morning I took the chart above and reworked it.
Now with box plots.
Overall, however, I really like this designer’s approach. We should not fear subtlety and nuance, and margins of error are just that. After all, we need not go back too far in time to remember a certain candidate who thought she had a presidential election locked up when really her opponent was within the margin of error.
We’re starting this week with an article from the Philadelphia Inquirer. It looks at the increasing number of guns confiscated by the Transportation Security Administration (TSA) at Philadelphia International Airport. Now while this is a problem we could discuss, one of the graphics therein has a problem that we’ll discuss here.
We have a pretty standard bar chart here, with the number of guns “detected” at all US airports from 2008 through 2021. The previous year is highlighted with a darker shade of blue. But what’s missing?
We have two light grey lines running across the graphic. But what do they represent? We do have the individual data points labelled above each bar, and that gives us a clue that the grey lines are axis lines, specifically representing 2,000 and 4,000 guns, because they run between the bars straddling those two lines.
However, we also have the data labels themselves. I wonder, however, are they even necessary? If we look at the amount of space taken up by the labels, we can imagine that three labels, 2k, 4k, and 6k, would use significantly less visual real estate than the individual labels. The data contained in the labels could be relegated to a mouseover state, revealed only when the user interacts directly with the graphic. Here it serves as a “sparkle”, distracting from the visual relationships of the bars.
If the actual data values to the single digit are important, a table would be a better format for displaying the information. A chart should show the visual relationship. Now, perhaps the Inquirer decided to display data labels and no axis for all charts. I may disagree with that, but it’s a house data visualisation stylistic choice.
But then we have the above screenshot. In this bar chart, we have something similar. Bars represent the number of guns detected specifically at Philadelphia International Airport, although the time framer is narrower being only 2017–2021. We do have grey lines in the background, but now on the left of the chart, we have numbers. Here we do have axis labels displaying 10, 20, and 30. Interestingly, the maximum value in the data set is 39 guns detected last year, but the chart does not include an axis line at 40 guns, which would make sense given the increments used.
At the end of the day, this is just a frustrating series of graphics. Whilst I do not understand the use of the data labels, the inconsistency with the data labels within one article is maddening.
Philadelphia made the national and international news last week, although for once not because we’re all being shot to death. This time because a fire in a rowhome killed 12 people, including nine children. The Philadelphia Inquirer quickly posted a short article explaining what occurred that morning. But the early indication, based upon the confession of a five-year old, is that a child playing with a light set a live Christmas tree on fire.
Ironically, the city prohibits live trees in high rises, apartment buildings, and multi-family dwellings. The rule is in place because live trees are a very real fire hazard. Just a few weeks earlier, a man and two of his sons were killed in a suburb north of Philadelphia (his wife and a third son survived). They died in a fire that began with lights on a live tree. But here in the city, the code states that multi-family dwellings begin at three households. This rowhome had been converted into two separate units, so a live tree was legal. But they would have been better without.
The Inquirer article features a scrolling illustration depicting what we presently know about the fire: how and where it started, why it may have spread, and ultimately who died.
Live trees smell great, but they’re a very real fire risk.