demo D200
The correlation matrix in React
Every numeric column against every other, Pearson or Spearman
type: 'correlogram'
This draws a correlation matrix of every numeric column against every other, by Pearson or Spearman. It surfaces which measures move together across a whole dataset in one picture, so a relationship worth chasing stands out.
This is the React version. The grid mounts through the createLatticeGrid adapter, which takes its configuration as ordinary props and hands back the live grid through a ref. The grid below is the same one every other tab runs.
The configuration
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@toclocoinc/lattice-grid@1.71.0/lattice-grid.min.css">
<div id="app"></div>
<script type="module">
import React from 'https://esm.sh/react@18';
import { createRoot } from 'https://esm.sh/react-dom@18/client';
import { createGrid } from 'https://cdn.jsdelivr.net/npm/@toclocoinc/lattice-grid@1.71.0/lattice-grid.esm.min.js';
import { createLatticeReact } from 'https://cdn.jsdelivr.net/npm/@toclocoinc/lattice-grid@1.71.0/modules/react.esm.min.js';
import { createChart } from 'https://cdn.jsdelivr.net/npm/@toclocoinc/lattice-grid@1.71.0/modules/charts.esm.min.js';
const { LatticeGrid, LatticeChart } = createLatticeReact({ React, createGrid, createChart });
const columns = [
{ field: 'symbol', title: 'Symbol' },
{ field: 'desk', title: 'Desk', filter: { type: 'set' } },
{ field: 'region', title: 'Region', filter: { type: 'set' } },
{ field: 'price', title: 'Price', type: 'number', format: { decimals: 4 } },
{ field: 'bid', title: 'Bid', type: 'number', format: { decimals: 4 } },
{ field: 'volume', title: 'Volume', type: 'number', format: { notation: 'compact' } },
{ field: 'notional', title: 'Notional', type: 'number', format: { style: 'currency', currency: 'USD' }, total: 'sum' },
];
const rows = [/* trading book: symbol, desk, region, price, bid, volume, notional */];
function App() {
const [grid, setGrid] = React.useState(null);
// A correlogram takes the columns to correlate, the method (pearson,
// spearman or kendall) and whether to print the coefficient in each cell.
return (
<>
{grid && (
<LatticeChart grid={grid} type="correlogram" columns={['price', 'bid', 'ask', 'volume', 'notional']} method="pearson" values title="Correlation matrix" style={{ height: '340px' }} />
)}
<LatticeGrid rowKey="id" columns={columns} rows={rows} onGridReady={setGrid} style={{ height: '340px', marginTop: '14px' }} />
</>
);
}
createRoot(document.getElementById('app')).render(<App />);
</script>