Towards a convention for table ordering
Airports present many minor irritations - of particular annoyance to me is the bad design of departure screens.
Here's an example from Melbourne Airport recently. As I approached the gates, here's what the departure board looked like:
At this point we've passed check-in/security/passport control and we want to check the status of the flight and which gate we need to go to.
Finding one's flight information involves the following mental process (largely subconscious for frequent flyers, less so for others).
- Figure out/recall what order the board is sorted in (it's "scheduled departure time")
- Remember the scheduled departure time of the flight
- Find the flights at that departure time
- If necessary, look within the group of flights at that departure time to find the destination and then airline/flight number
- Finally, read the information that we're actually interested in: gate number / status / estimated departure
Well this works well enough, this process presents several issues that make the table harder to read than it might otherwise be.
Foremost, there's no actual hint of what the sort order might be. We aren't all frequent flyers, and those who aren't intimately familiar will need to examine it first to determine what the order might be (it doesn't help that there is a very similar-looking column of times right next to it).
There's also the reading order - it's most pleasant and intuitive to read things from left to right. But in this scenario we must look at the fourth column, then the third, then the first/second, then the final three.
An additional problem is the repeated information that makes groupings non-obvious and harder to see, both within columns (there are many repeating values in the scheduled departure time column), and between columns (the scheduled and estimated times are the same in most rows).
A simple fix
We can solve most of these problems very simply - by changing the order of the columns to match the sort order.
For instance, here's the above information as an HTML table (for brevity only the top few rows are shown), with the original ordering.
Original:
airline | flight | destination | std | etd | gate | status |
---|---|---|---|---|---|---|
Emirates |
EK5133 |
Auckland |
16:50 |
16:51 |
2 |
DEPARTED |
Qantas |
QF155 |
Auckland |
16:50 |
16:51 |
2 |
DEPARTED |
Emirates |
EK5009 |
Perth |
16:50 |
17:00 |
20 |
CLOSED |
Qantas |
QF009 |
Perth |
16:50 |
17:00 |
20 |
CLOSED |
Etihad |
EY463 |
Abu Dhabi |
17:15 |
17:15 |
14A |
CLOSING |
Emirates |
EK5037 |
Singapore |
17:20 |
21:00 |
3 |
|
Qantas |
QF037 |
Singapore |
17:20 |
21:00 |
3 |
We can reorder the columns as per the sort order as follows, placing the scheduled departure time on the left:
Nicely ordered:
std | etd | destination | airline | flight | gate | status |
---|---|---|---|---|---|---|
16:50 |
16:51 |
Auckland |
Emirates |
EK5133 |
2 |
DEPARTED |
16:50 |
16:51 |
Auckland |
Qantas |
QF155 |
2 |
DEPARTED |
16:50 |
17:00 |
Perth |
Emirates |
EK5009 |
20 |
CLOSED |
16:50 |
17:00 |
Perth |
Qantas |
QF009 |
20 |
CLOSED |
17:15 |
17:15 |
Abu Dhabi |
Etihad |
EY463 |
14A |
CLOSING |
17:20 |
21:00 |
Singapore |
Emirates |
EK5037 |
3 |
|
17:20 |
21:00 |
Singapore |
Qantas |
QF037 |
3 |
We can now read from left to right straightforwardly - If I booked a 16:50 flight to Perth on Qantas, I can now read that intuitively starting the left, and see the relevant status and gate information on the right.
This in itself is a readability win, but there are further enhancements to be made, by removing redundant information, as follows:
std | etd | destination | airline | flight | gate | status |
---|---|---|---|---|---|---|
16:50 |
16:51 |
Auckland |
Emirates |
EK5133 |
2 |
DEPARTED |
Qantas |
QF155 |
2 |
DEPARTED |
|||
17:00 |
Perth |
Emirates |
EK5009 |
20 |
CLOSED |
|
Qantas |
QF009 |
20 |
CLOSED |
|||
17:15 |
17:15 |
Abu Dhabi |
Etihad |
EY463 |
14A |
CLOSING |
17:20 |
21:00 |
Singapore |
Emirates |
EK5037 |
3 |
|
Qantas |
QF037 |
3 |
Repeated values for scheduled departure and destination have been removed. Because of the left-to-right ordering, a sort of tree-like structure emerges, with each distinct departure time as a branch, destinations as a sub branch, and so on, as we move from left to right.
Let's also make the table more concise by combining rows that are in fact code-share versions of the same flight, and fix the estimated departure time by only displaying it if it differs from scheduled:
std | etd | destination | airline | flight | gate | status |
---|---|---|---|---|---|---|
16:50 |
16:51 (1m late) |
Auckland |
Emirates / Qantas |
EK5133 / QF155 |
2 |
DEPARTED |
17:00 (10m late) |
Perth |
Emirates / Qantas |
EK5009 / QF009 |
20 |
CLOSED |
|
17:15 |
Abu Dhabi |
Etihad |
EY463 |
14A |
CLOSING |
|
17:20 |
21:00 (3h 40m late) |
Singapore |
Emirates / Qantas |
EK5037 / QF037 |
3 |
|
17:25 |
Colombo |
SriLankan |
UL605 |
4 |
OPENS 16:25 |
|
17:30 |
Denpasar |
Qantas |
QF045 |
8 |
OPENS 16:30 |
|
18:20 |
Wellington |
Air China / Air NZ |
CA5125 / NZ850 |
11A |
OPENS 17:20 |
Informing the layout
The tree-like hierarchy and left-to-right ordering can not only improve the readability and eliminate clutter, but also inform how we choose to sort the table in the first place. Different sort orders are possible and may work better than departure time.
Thinking about "which column orders allow us to show the most hierarchical representation of the data?" helps us develop the ordering that most quickly and intuitively narrows down the search through the information.
We might for instance note that it's easy to forget the precise departure time, and hard to find a time in a column of very similar numbers - but much harder to forget the city one is flying to.
We might then choose to order by city instead. That looks like this (showing the whole table this time, plz keep scrolling):
destination | std | etd | airline | flight | gate | status | late |
---|---|---|---|---|---|---|---|
Abu Dhabi |
17:15 |
Etihad |
EY463 |
14A |
CLOSING |
||
Auckland |
16:50 |
16:51 |
Emirates / Qantas |
EK5133 / QF155 |
2 |
DEPARTED |
1m |
18:55 |
Qantas |
QF157 |
2 |
OPENS 17:55 |
|||
Virgin |
VA169 |
4 |
OPENS 17:55 |
||||
Air China / Air NZ |
CA5135 / NZ126 |
7 |
OPENS 17:55 |
||||
Bandar Seri B |
18:45 |
R Brunei |
BI006 |
18 |
OPENS 17:45 |
||
Beijing |
20:15 |
Air China |
CA166 |
6 |
|||
Chengdu |
22:00 |
Sichuan |
3U8418 |
18 |
|||
Christchurch |
18:35 |
Virgin |
VA099 |
11B |
OPENS 17:35 |
||
Colombo |
17:25 |
SriLankan |
UL605 |
4 |
OPENS 16:25 |
||
Denpasar |
17:30 |
Qantas |
QF045 |
8 |
OPENS 16:30 |
||
18:55 |
JetStar / Qantas |
JQ035 / QF265 |
3 |
OPENS 17:55 |
|||
Doha |
22:20 |
Qatar |
QR905 |
9 |
|||
Dubai |
18:55 |
Emirates / Qantas |
EK405 / QF8405 |
5 |
OPENS 17:55 |
||
Perth |
16:50 |
17:00 |
Emirates / Qantas |
EK5009 / QF009 |
20 |
CLOSED |
10m |
Singapore |
17:20 |
21:00 |
Emirates / Qantas |
EK5037 / QF037 |
3 |
3h 40m |
|
19:25 |
Singapore A / Virgin |
SQ208 / VA5638 |
14A |
OPENS 18:25 |
|||
Wellington |
18:20 |
Air China / Air NZ |
CA5125 / NZ850 |
11A |
OPENS 17:20 |
I really like this destination-first ordering - in most cases a simple check of the first column is enough to be confident that one has found the row for one's flight. Airports could consider offering this or other arrangements and see how flyers respond.
Further enhancements
We can make the sort order even more obvious by adding a visual indication of magnitude where appropriate.
Switching examples now to a Top 10 of largest countries in the world by land area:
area | country |
---|---|
17098246 | Russia |
14000000 | Antarctica |
9984670 | Canada |
9596961 | China |
9525067 | United States |
8515767 | Brazil |
7692024 | Australia |
3287263 | India |
2780400 | Argentina |
2724900 | Kazakhstan |
We can not only see the sort order clearly, but quickly gain an idea of the relative magnitudes of the quantities, without even interpreting the numbers.
This table would often be presented with the countries first and quantities second: Putting the quantities first conveys more clearly what the chart is about.
UI possibilities
If this convention were to be more widely adopted, interesting possibilities also open up for interactive table UI: We could change the sort order simply by dragging column headings into a different order.
SQL support
It would be great if this was an available shorthand option in SQL. Instead of tediously replicating the column order from the select clause, we could simply write something like:
select
a, b, c
order by
left to right (a desc)
Feedback please
If you decide to use this convention in your own infographics work, let me know and tell me what you think.