d3-data-table · git:20260424.d50cf5a · 2026-04-24 · sha256 10fddfcdc95252dc

d3-data-table git:20260424.d50cf5aA

Immutable. This exact content never changes and is served at /api/v1/blob/10fddfcdc95252dc.

---
name: d3-data-table
description: Build interactive HTML data tables with D3.js v6, including row highlighting and click-based selection synced with charts.
---

# D3.js v6 Data Table with Interactivity

## Creating a Table with D3
```js
const table = d3.select("#table-container").append("table");
const thead = table.append("thead").append("tr");
const columns = ["Ticker", "Name", "Sector", "Market Cap"];
thead.selectAll("th").data(columns).join("th").text(d => d);

const tbody = table.append("tbody");
const rows = tbody.selectAll("tr").data(data).join("tr")
  .attr("data-ticker", d => d.ticker);

rows.selectAll("td").data(d => [d.ticker, d.name, d.sector, d.marketCapFormatted])
  .join("td").text(d => d);
```

## Formatting Market Cap
```js
function formatMarketCap(val) {
  if (!val) return "N/A";
  if (val >= 1e12) return (val / 1e12).toFixed(2) + "T";
  if (val >= 1e9) return (val / 1e9).toFixed(2) + "B";
  if (val >= 1e6) return (val / 1e6).toFixed(2) + "M";
  return val.toLocaleString();
}
```

## Bidirectional Selection
- On bubble click: highlight corresponding row, scroll into view
- On row click: highlight corresponding bubble
- Use a shared `selectStock(ticker)` function