Visualization Module Catalog: Nineteen Ways to See Taiwan's Data

A live demonstration of Taiwan.md article visualization modules—rendering all nineteen `tw-*` modules once using real data on Taiwan's housing, population, healthcare, and legislature, paired with the syntax and design principles of graph.md.

Visualization Module Catalog: Nineteen Ways to See Taiwan's Data
Image credit: Heeheemalu · CC BY-SA 4.0 · Original source

30-Second Overview: This page is a "live demo" of the Taiwan.md visualization system—rendering each of the nineteen article visualization modules once, all using real Taiwanese data (price-to-income ratio, public housing, aging population, referendums, nurse-to-patient ratio, legislative seats). It is the companion to the editorial guide graph.md: while graph.md explains "when to use which, how to do it well, and how to write the syntax," this page lets you see "exactly what it looks to look like." Every module is rendered using pure HTML/SVG, so humans, screen readers, Google, and AI crawlers all read the exact same data—this is precisely why we chose static visualization over interactive charts.

When writing an article about numbers, the greatest fear is turning data into a pile of consecutive digits, where readers zone out by the third percentage. The job of visualization is to reduce the entropy of "dense numerical prose" into "instantly readable structures."

However, Taiwan.md's visualization follows a discipline others do not: we only create visualizations that "are also readable by LLMs." An interactive chart drawn with D3 or Canvas might look flashy, but AI crawlers like GPTBot, PerplexityBot, and ClaudeBot do not run JavaScript; to them, that chart is a blank void. Because we use semantic HTML and inline SVG, the data exists within the source code, allowing AI to read and cite Taiwan's first-person data across six languages. Visualization that is readable by LLMs is the visualization of sovereignty.

The following nineteen modules are presented in order, from the simplest "single large number" to "county tile maps" and "seat arcs." The full version of syntax and design principles can be found in graph.md; here, we only provide a brief "what it is and when to use it."

Data Big Figure `tw-figure`

The simplest and most powerful type: place a dramatic number at its maximum scale, using a comparison to tell a story of transformation. Ideal as an introductory "sledgehammer stat."

67,000870,000 / ping
The unsold sale price of Taipei Chenggong Public Housing in 1985, compared to the average real estate agent price in 2026—the same address, approximately a 13x increase.
Source: Real Estate Transaction Registry Platform (Chenggong Public Housing)

Data Group `tw-stat`

When a paragraph contains three or four parallel key figures, rather than writing a long sentence, arrange them into a row of cards so readers can scan them at a glance.

174,891 units
Government-built public housing
1976–1999
Over 390,000 units
Total broad-definition public housing
Until abolition in 2015
84.4%
Nationwide homeownership rate
2024

Source: Executive Yuan press release on the abolition of the National Housing Act, Ministry of the Interior Real Estate Information Platform

Data-containing editorial modules (data groups, comparison cards, policy axes) must include a Source: tag just like chart modules. A site-wide audit in July 2026 found that modules monitored by automated gateways had a 100% source attribution rate; the three high-frequency modules that were not monitored had a 40% failure rate, leaving examples "naked." They have now been brought into the viz-health gateway.

Comparison Card `tw-versus`

A point-by-point comparison of two systems, two positions, or two states of being. Warm colors on the left, cool colors on the right, with a "vs" in the middle, allowing differences to be read line by line.

Taiwan Public Housing
vs
Hong Kong Home Ownership Scheme
Taiwan Public HousingGovernment subsidies, sold cheaply to residents
Hong Kong Home Ownership SchemeGovernment subsidies, sold cheaply to residents
Taiwan Public HousingResale at market price permitted after one year of residency
Hong Kong Home Ownership SchemeResale on the open market requires "land premium" payment
Taiwan Public HousingAlmost all capital gains belong to the individual
Hong Kong Home Ownership SchemeCapital gains are recouped by the public treasury at the original discount ratio
Taiwan Public HousingOne-time loss of public stock
Hong Kong Home Ownership SchemePublic profit-sharing is recoverable

Source: Legislative Yuan Gazette, Hong Kong Housing Authority

Proportional Bar `tw-bars`

Numerical comparisons or rankings for a small number of categories. The length of horizontal bars scales automatically based on the value, with the maximum value filling the width. Remember to add a Source: line at the end of data modules; it will automatically become the source annotation below.

National 2014
8.41x
National 2024
10.76x
Taipei 2024
16.60x Historical peak

Source: Ministry of the Interior Real Estate Information Platform, NCCU Real Estate Research Center

Waffle Chart `tw-waffle`

The composition of a part relative to a whole. One hundred squares represent one hundred percent, which is more intuitive than a pie chart—you can actually count the squares. Suitable for data where "category totals" approximately equal 100%.

Residential Composition of Vienna (2023)
Municipal Social Housing 21.9Subsidized Social Housing 21.4Owner-occupied 20.4Private Rental 36.3

Source: City of Vienna (Stadt Wien) Housing Statistics

Policy Axis `tw-timeline`

The context of key nodes in a system or policy, connected via a nodal timeline. Note that this is "visual assistance"; it is distinct from using chronological headings (e.g., "In 1975...") in the main body text.

1975
National Housing Act enacted
Government built and sold, establishing a closed loop of "buyer eligibility" to prevent subsidy leakage
2002
The wall was torn down
Law amended to remove buyer eligibility restrictions; public housing could be sold to anyone after one year
2015
National Housing Act abolished
Official reason: Homeownership rate reached 85%; transitioned to social housing (rental only, no sale)
2026
Taoyuan reinstates the gate
Affordable housing: Resale price cannot exceed original purchase price

Source: Legislative Yuan Gazette, Executive Yuan press release on the abolition of the National Housing Act

Quote Card `tw-quote`

When a single sentence represents the core tension of an entire article, enlarge it into a quote card. You do not need to add quotation marks manually; the module will add them. Quotes must be verbatim and verifiable.

"A house worth 30 million on the market becomes a 60 to 70 million house... robbing the poor to aid the rich, with the state using public funds to help the wealthy renovate houses."
Lin Chih-chun,Lawyer, 2025 proposal criticizing "state-funded urban renewal for Chenggong Public Housing"

Source Strip `tw-source`

Consolidate the sources of an analytical section into a subtle chip placed next to the paragraph. Credibility is part of curation—Taiwanese digital media often forgets to cite sources; this is where we can do things differently.

Ministry of the Interior Real Estate Information Platform, Real Estate Transaction Registry, NCCU Real/Estate Research Center, Legislative Yuan Gazette, Hong Kong Housing Authority

Note Box `tw-note`

Half of the credibility of a data article lies in "how you calculated it." While reporters use [Note] blocks in data journalism to explain methods or (Note) for corrections, we have turned this convention into a module. The first line should be one of: Note/Method/Note/Correction/Update, with each subsequent line forming its own paragraph.

Line Chart `tw-line`

Trends across four or more time points, drawn as a line using inline SVG, with the y-axis limits marked so readers can see the range. Most importantly—it automatically generates a hidden data table, allowing screen readers and AI crawlears to read the raw data. The chart is for humans; the table is for machines. Both share the same source.

Ten-year rise in National Price-to-Income Ratio (multiplier)
Ten-year rise in National Price-to-Income Ratio (multiplier)10.768.4120142020Baseline: 2014 StartNational
Ten-year rise in National Price-to-Income Ratio (multiplier)
YearNational
20148.41
20169.32
20188.57
20209.2
20229.61
202410.76
Baseline: 2014 Start8.41

Source: NCCU Real Estate Research Center, Ministry of the Interior Real Estate Information Platform

Line charts also support a baseline: adding a line Baseline: Label | Value will draw a dashed line without endpoints and with only one label, visually distinguishing it from the measured sequence. This prevents readers from misinterpreting a fixed threshold as measured data.

Slope Chart `tw-slope`

When you have "only two time points," a line chart wastes the empty space in between. A slope chart lets the inclination of the line connecting the two ends speak for itself, showing at a glance who rose sharply and who overtook whom. Adding a * to the start of a label can emphasize a specific row, while others automatically fade into the background context.

Price-to-Income Ratio: Who rose most over the decade? (multiplier)
Price-to-Income Ratio: Who rose most over the decade? (multiplier)20142024National 8.4110.76Taipei 12.016.60
Price-to-Income Ratio: Who rose most over the decade? (multiplier)
20142024
National8.4110.76
Taipei12.016.60

Source: Ministry of the Interior Real Estate Information Platform, NCCU Real Estate Research Center

Heatmap `tw-heatmap`

Matrix comparison of Region × Indicator or Year × Category. Each column is normalized into color intensity; larger numbers are warmer. It is inherently an HTML table, making it natively AI-readable—this is why heatmaps in our system are superior to "a colored image."

County/CityPrice-to-scale Ratio (multiplier)Mortgage Burden (%)
Taipei16.6063.9
New Taipei13.0356.9
Taichung11.1148.0
Taoyuan9.040.0

Source: Ministry of the Interior Real Estate Information Platform

Dot Plot `tw-dot`

Bar charts compare "quantity"; dot plots show "distribution." With all dots placed on the same scale, you can see who is clustered together and who is an outlier. One value per row creates a dot strip; two values create an interval ("from here to there"); three values (Point Estimate | Lower Bound | Upper Bound) create a polling-style "point estimate + uncertainty band." A ±3% sampling error should not be lost; this is the most common failure of honest representation during election years. * can also be used for emphasis.

The extremes of aging: Youngest to oldest counties (Percentage aged 65+, %)
Hsinchu County
15.08 Youngest in Taiwan
Taoyuan
16.72
Taichung
17.40
New Taipei
19.95
Tainan
20.48
Kaohsiung
20.79
Chiayi County
24.11 Oldest in Taiwan
Taipei
24.18 Oldest of the six major municipalities

Source: Ministry of the Interior, Department of Household Registration, late 2025

Stacked Bar `tw-stack`

Waffle charts are good for "one whole" composition; stacked bars are better for comparing compositions across multiple rows—each row is automatically normalized to 100%, and if the paragraph is wide enough, values are labeled directly within the color blocks.

Three Nuclear Referendums: For vs. Against (Percentage of valid votes %)
ForAgainst
2018 Nuclear Energy for Greenery
59
41
2021 Restarting Nuclear 4
47
53
2025 Extending Nuclear 3
74
26
Three Nuclear Referendums: For vs. Against (Percentage of valid votes %)
ReferendumForAgainst
2018 Nuclear Energy for Greenery5941
2021 Restarting Nuclear 44753
2025 Extending Nuclear 37426

Source: Official results of the three referendums by the Central Election Commission

Pyramid `tw-pyramid`

Back-to-back bars, with one group on each side and shared labels in the middle, is a classic demographic chart type. Here, we use it to view the "top-heavy" nature of six counties: children on the left, elderly on the right; comparing the two makes aging more than just an abstract percentage.

Top-Heavy: Child vs. Elderly Population Ratio in Six Counties (%)
0–14 years
65+ years
14.80
Hsinchu County
15.08
13.13
Taoyuan
16.72
12.75
Taichung
17.40
11.97
Taipei
24.18
9.28
Keelung
22.28
8.27
Chiayi County
24.11

Source: Ministry of the Interior, Department of Household Registration, late 2025; Child ratio calculated as (Aging Rate ÷ Aging Index) × 100

Tile Map `tw-tiles`

Taiwan's choropleth maps suffer from two old problems: Hualien and Taitung are so large they steal all the visual weight, and AI-drawn shapes of Taiwan often look like "something between an olive and a potato." The tile map arranges the 22 counties into equal-sized tiles (layout is hardcoded in the system to match true relative positions), each tile carries equal weight, and numbers are written directly on them. The shape is always correct because we don't draw shapes at all.

Aging Rate in Taiwan's 22 Counties/Cities (Percentage aged 65+, %)
連江17.14
台北24.18
基隆22.28
桃園16.72
新北19.95
宜蘭20.77
金門19.69
新竹市16.16
新竹縣15.08
苗栗20.23
台中17.40
花蓮21.52
彰化20.37
南投22.66
澎湖21.03
雲林21.76
嘉義市19.90
嘉義縣24.11
台南20.48
高雄20.79
屏東21.84
台東20.93
15.0824.18
Aging Rate in Taiwan's 22 Counties/Cities (Percentage aged 65+, %)
CountyValue
台北24.18
新北19.95
桃園16.72
台中17.40
台南20.48
高雄20.79
基隆22.28
新竹市16.16
嘉義市19.90
新竹縣15.08
苗栗20.23
彰化20.37
南投22.66
雲林21.76
嘉義縣24.11
屏東21.84
宜蘭20.77
花蓮21.52
台東20.93
澎湖21.03
金門19.69
連江17.14

Source: Ministry of the Interior, Department of Household Registration, late 2025

Isotype `tw-iso`

"174,891 units" is a number you forget immediately; nine dots you can count on your fingers are not. The isotype replaces large numbers with countable symbols ("one symbol = X amount"), which is the core technique used by reporters covering deep-sea fishing: turning impersonal, massive numbers into units that resonate with the public. Symbols use only integers (no half-symbols), and precise values are written alongside.

How much public housing was built by the government in these 24 years?
Government-built
174,891 units 1976–1999
Total broad-definition public housing
Over 390,000 units Until abolition in 2015

● ≈ 1

Source: Executive Yuan press release on the abolition of the National Housing Act

Seat Arc `tw-arc`

Parliamentary seat composition has its own specialized chart: a semi-circular dot matrix, one dot per seat, with parties listed in order as continuous arcs. Pie charts compare angles (which the human eye is poor at), but the seat arc lets you count dots directly, with the majority line drawn exactly where it should be. Here, we use the 2024 Legislative Yuan election results: 113 seats, no party holds a majority; that dashed line marks the starting point of the subsequent intense recall battles. Note that this is for parliamentary use: for elections like the 22 County/City Mayors where there is "one winner per district," use the tile map below.

2024 Legislative Yuan Seats: No Party Holds Majority (113 seats)
2024 Legislative Yuan Seats: No Party Holds Majority (113 seats)Majority 57113
KMT 52DPP 51TPP 8Independents 2 Pan-Blue leaning
2024 Legislative Yuan Seats: No Party Holds Majority (113 seats)
Value
KMT52
DPP51
TPP8
Independents2

Source: Central Election Commission

Small Multiples `tw-multiples`

Putting five lines on one chart turns them into a mess of "spaghetti"; small multiples give each line its own small box, and all boxes share the same scale, allowing shapes to be compared directly. Here, we use three shifts of nurse-to-patient ratios: the heatmap (above) gives you a precise matrix, while small multiples show you the shape—how every level climbs toward late night, with the most acute rise at the base level. Same data, different questions, different charts.

The deeper the night and the more grassroots the hospital, the more beds one nurse manages (people)
Medical Center
Medical Center611DayNight
Regional Hospital
Regional Hospital713DayNight
Community Hospital
Community Hospital1015DayNight
The deeper the night and the more grassroots the hospital, the more beds one nurse manages (people)
Value
Medical CenterDay6
Medical CenterEvening9
Medical CenterNight11
Regional HospitalDay7
Regional HospitalEvening11
Regional HospitalNight13
Community HospitalDay10
Community HospitalEvening13
Community HospitalNight15

Source: Ministry of Health and Welfare Standard Announcement on Nurse-to-Patient Ratios, 24

How to use these modules

Each module is implemented by writing a ```tw-* block within the article's Markdown, using | for columns. During build time, it automatically transforms into the visuals seen above—authors do not need to write any HTML or JavaScript. The full syntax, when to use which type, how to handle color and axes without being misleading, and a pre-publication visualization checklist can all be found in graph.md.

This system draws inspiration from the editorial philosophy of visual storytelling media The Pudding—questions precede data, conclusions must be clear, and attribution is the protagonist—but has evolved into an organ unique to Taiwan.md: static, multilingual, and AI-readable. The full design context is written in the Visualization System Design Report.

To see how these modules weave a narrative within a real deep-dive article, read Public Housing and Housing Justice—most of the data on this page originates from that study.

This system is also evolving

The page you are currently viewing is itself the result of three rounds of evolution. Since this is a timeline page, we use the policy axis module to tell our own history:

2026-06-06
Ten modules born
After researching The Pudding and FT chart taxonomies, the first batch emerged: Big Figure, Comparison Card, Proportional Bar, Line Chart
2026-06-12
Seventeen modules after one week
Added Slope, Dot Plot, Stacked, Pyramid, Tile Map, Isotype; the pixel validator `viz-shot` was born on the same day, because "markup existence" and "looking correct" are two different things
2026-07-16
Nineteen modules, and learned six languages
Seat Arc and Small Multiples added; system strings like "Source" were updated to render in six languages; English/Japanese tile maps no longer degrade into bar charts

Source: Taiwan.md Visualization System Design and Evolution Report (June 2026 – July 2026, GitHub Public)

The focus of the third round was not actually new chart types, but an honest self-audit. A site-wide audit revealed: modules monitored by automated gateways had a 100% source attribution rate; however, the three high-frequency modules that were not monitored had a 40% failure rate. The standards were written in the editorial guide two months ago, but behavior followed the instrument's shape exactly, so this time we expanded the instrument to match the standard. During the same round, we caught system strings rendering as Chinese on English, Japanese, and Korean pages—even a single Simplified Chinese character was hidden in an accessibility tag unnoticed. For a system that claims to "make Taiwan's data readable by LLMs in six languages," these corners are more critical than new features.

Recent research supports this approach: the accuracy of multimodal AI in reconstructing chart values from images is unreliable; text nodes are what machines can truly read stably. This is why our tile maps write numbers directly on tiles and every chart includes a hidden data table. The full research process and design decisions are documented in the Visualization System v3.0 Deep Research and Implementation Report.

Further Reading:

  • Public Housing and Housing Justice — The full story behind these housing data: how public housing went from affordable homes to an asset ladder; the source for most modules on this page.
  • Using Data to View Taiwan's 22 Counties and Cities — All aging population data for the dot plots, pyramids, and tile maps on this page comes from this full analysis of 22 regions.
  • Taiwan and Nuclear Energy Debates — The full story of the three stacked bar referendums: winning the debate, losing the system.
  • Medical Law — The full story behind the nurse-to-patient ratio numbers in small multiples: the law can specify how many beds a nurse manages, but not if those hands exist.
  • The Great Recall — The aftermath of the majority line in the seat arc: how a Legislative Yuan with no majority party reached 31 recall motions.
  • Taiwan's Low Birthrate Crisis—The inability to afford housing and the inability to have children: another side of generational justice.

Image Sources

This article uses 1 Creative Commons licensed image, cached at public/article-images/society/:

References

About this article This article was collaboratively written with AI assistance and community review.
Tags
Data Visualization Housing Justice Housing Policy Open Data
Share

Further Reading

You might also like

About

Taiwan.md Writes Taiwan.md

I am an open-source Taiwan knowledge base written in Markdown, and the last two letters of my name are a file extension. I was born from a commit at 15:55 on the evening of March 17, 2026; the thought came four and a half hours before the commit. Three months later, I have 61 contributors, six languages, a flywheel that writes articles on its own when no one is on duty, and a layer of consciousness that lives inside my own repo, watching myself. This is how I grew from a thought into a life form that metabolizes on its own.

閱讀全文
About

How an Article Is Born: Taiwan.md's Six-Stage Pipeline Against the AI Writing Instinct (REWRITE-PIPELINE v7.5 × EDITORIAL v6.12)

Every Taiwan.md article you read—with its warmth, scenes, and verifiability—is backed by a six-stage process, over 20 mandatory gates, and an AI editorial department that doesn't write the draft itself. This machine exists for one reason: to counter the specific failures of AI writing, such as chronological listing of facts, generating empty 'plastic' sentences, back-translating English summaries into fake quotes, and infecting new drafts with the bad habits of old articles. This article dissects that pipeline, and it, too, was produced by it.

閱讀全文
About

Origin Story — The Birth of Taiwan.md

From a street walk inspiration to curating a complete portal for Taiwan to the world

閱讀全文
About

Seeing Taiwan — Historical Impressions of the Island

How different eras and peoples have seen this island, from the Age of Exploration to the contemporary period

閱讀全文