## viz.risk_table()


Return the numbers-at-risk table as a Great Tables object.


Usage

``` python
viz.risk_table(
    km,
    times=None,
)
```


Creates a publication-ready table showing the number of subjects at risk at specified time points, stratified by group (if fitted with strata). The table is formatted with Great Tables for interactive viewing and export to various formats.


## Parameters


`km: KaplanMeier`  
A fitted [KaplanMeier](KaplanMeier.md#greenwood.KaplanMeier) object.

`times: Any = None`  
Query times for the numbers-at-risk table. Defaults to six evenly spaced, rounded times from 0 to the maximum observed follow-up time.


## Returns


`great_tables.GT`  
A Great Tables object, which can be displayed in notebooks or exported.


## Examples

Fit a stratified Kaplan-Meier estimator and produce a publication-ready risk table using Great Tables:


``` python
import greenwood as gw

# Load data and fit a stratified Kaplan-Meier estimator
lung = gw.load_dataset("lung", backend="polars")
y = gw.Surv.right(lung["time"], event=(lung["status"] == 2))
km = gw.KaplanMeier().fit(y, by=lung["sex"])

# Produce a publication-ready numbers-at-risk table
gw.risk_table(km, times=[0, 250, 500, 750, 1000])
```


<style>
#zkmjizdxbm table {
          font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Helvetica Neue', 'Fira Sans', 'Droid Sans', Arial, sans-serif;
          -webkit-font-smoothing: antialiased;
          -moz-osx-font-smoothing: grayscale;
        }

#zkmjizdxbm thead, tbody, tfoot, tr, td, th { border-style: none; }
 tr { background-color: transparent; }
#zkmjizdxbm p { margin: 0; padding: 0; }
 #zkmjizdxbm .gt_table { display: table; border-collapse: collapse; line-height: normal; margin-left: auto; margin-right: auto; color: #333333; font-size: 16px; font-weight: normal; font-style: normal; background-color: #FFFFFF; width: auto; border-top-style: solid; border-top-width: 2px; border-top-color: #A8A8A8; border-right-style: none; border-right-width: 2px; border-right-color: #D3D3D3; border-bottom-style: solid; border-bottom-width: 2px; border-bottom-color: #A8A8A8; border-left-style: none; border-left-width: 2px; border-left-color: #D3D3D3; }
 #zkmjizdxbm .gt_caption { padding-top: 4px; padding-bottom: 4px; }
 #zkmjizdxbm .gt_title { color: #333333; font-size: 125%; font-weight: initial; padding-top: 4px; padding-bottom: 4px; padding-left: 5px; padding-right: 5px; border-bottom-color: #FFFFFF; border-bottom-width: 0; }
 #zkmjizdxbm .gt_subtitle { color: #333333; font-size: 85%; font-weight: initial; padding-top: 3px; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; border-top-color: #FFFFFF; border-top-width: 0; }
 #zkmjizdxbm .gt_heading { background-color: #FFFFFF; text-align: center; border-bottom-color: #FFFFFF; border-left-style: none; border-left-width: 1px; border-left-color: #D3D3D3; border-right-style: none; border-right-width: 1px; border-right-color: #D3D3D3; }
 #zkmjizdxbm .gt_bottom_border { border-bottom-style: solid; border-bottom-width: 2px; border-bottom-color: #D3D3D3; }
 #zkmjizdxbm .gt_col_headings { border-top-style: solid; border-top-width: 2px; border-top-color: #D3D3D3; border-bottom-style: solid; border-bottom-width: 2px; border-bottom-color: #D3D3D3; border-left-style: none; border-left-width: 1px; border-left-color: #D3D3D3; border-right-style: none; border-right-width: 1px; border-right-color: #D3D3D3; }
 #zkmjizdxbm .gt_col_heading { color: #333333; background-color: #FFFFFF; font-size: 100%; font-weight: normal; text-transform: inherit; border-left-style: none; border-left-width: 1px; border-left-color: #D3D3D3; border-right-style: none; border-right-width: 1px; border-right-color: #D3D3D3; vertical-align: bottom; padding-top: 5px; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; overflow-x: hidden; }
 #zkmjizdxbm .gt_column_spanner_outer { color: #333333; background-color: #FFFFFF; font-size: 100%; font-weight: normal; text-transform: inherit; padding-top: 0; padding-bottom: 0; padding-left: 4px; padding-right: 4px; }
 #zkmjizdxbm .gt_column_spanner_outer:first-child { padding-left: 0; }
 #zkmjizdxbm .gt_column_spanner_outer:last-child { padding-right: 0; }
 #zkmjizdxbm .gt_column_spanner { border-bottom-style: solid; border-bottom-width: 2px; border-bottom-color: #D3D3D3; vertical-align: bottom; padding-top: 5px; padding-bottom: 5px; overflow-x: hidden; display: inline-block; width: 100%; }
 #zkmjizdxbm .gt_spanner_row { border-bottom-style: hidden; }
 #zkmjizdxbm .gt_group_heading { padding-top: 8px; padding-bottom: 8px; padding-left: 5px; padding-right: 5px; color: #333333; background-color: #FFFFFF; font-size: 100%; font-weight: initial; text-transform: inherit; border-top-style: solid; border-top-width: 2px; border-top-color: #D3D3D3; border-bottom-style: solid; border-bottom-width: 2px; border-bottom-color: #D3D3D3; border-left-style: none; border-left-width: 1px; border-left-color: #D3D3D3; border-right-style: none; border-right-width: 1px; border-right-color: #D3D3D3; vertical-align: middle; text-align: left; }
 #zkmjizdxbm .gt_empty_group_heading { padding: 0.5px; color: #333333; background-color: #FFFFFF; font-size: 100%; font-weight: initial; border-top-style: solid; border-top-width: 2px; border-top-color: #D3D3D3; border-bottom-style: solid; border-bottom-width: 2px; border-bottom-color: #D3D3D3; vertical-align: middle; }
 #zkmjizdxbm .gt_from_md> :first-child { margin-top: 0; }
 #zkmjizdxbm .gt_from_md> :last-child { margin-bottom: 0; }
 #zkmjizdxbm .gt_row { padding-top: 8px; padding-bottom: 8px; padding-left: 5px; padding-right: 5px; margin: 10px; border-top-style: solid; border-top-width: 1px; border-top-color: #D3D3D3; border-left-style: none; border-left-width: 1px; border-left-color: #D3D3D3; border-right-style: none; border-right-width: 1px; border-right-color: #D3D3D3; vertical-align: middle; overflow-x: hidden; }
 #zkmjizdxbm .gt_stub { color: #333333; background-color: #FFFFFF; font-size: 100%; font-weight: initial; text-transform: inherit; border-right-style: solid; border-right-width: 2px; border-right-color: #D3D3D3; padding-left: 5px; padding-right: 5px; }
 #zkmjizdxbm .gt_stub_row_group { color: #333333; background-color: #FFFFFF; font-size: 100%; font-weight: initial; text-transform: inherit; border-right-style: solid; border-right-width: 2px; border-right-color: #D3D3D3; padding-left: 5px; padding-right: 5px; vertical-align: top; }
 #zkmjizdxbm .gt_row_group_first td { border-top-width: 2px; }
 #zkmjizdxbm .gt_row_group_first th { border-top-width: 2px; }
 #zkmjizdxbm .gt_striped { color: #333333; background-color: #F4F4F4; }
 #zkmjizdxbm .gt_table_body { border-top-style: solid; border-top-width: 2px; border-top-color: #D3D3D3; border-bottom-style: solid; border-bottom-width: 2px; border-bottom-color: #D3D3D3; }
 #zkmjizdxbm .gt_summary_row { color: #333333; background-color: #FFFFFF; text-transform: inherit; padding-top: 8px; padding-bottom: 8px; padding-left: 5px; padding-right: 5px; }
 #zkmjizdxbm .gt_first_summary_row { border-top-style: solid; border-top-width: 2px; border-top-color: #D3D3D3; }
 #zkmjizdxbm .gt_last_summary_row_top { border-bottom-style: solid; border-bottom-width: 2px; border-bottom-color: #D3D3D3; }
 #zkmjizdxbm .gt_grand_summary_row { color: #333333; background-color: #FFFFFF; text-transform: inherit; padding-top: 8px; padding-bottom: 8px; padding-left: 5px; padding-right: 5px; }
 #zkmjizdxbm .gt_first_grand_summary_row_bottom { border-top-style: double; border-top-width: 6px; border-top-color: #D3D3D3; }
 #zkmjizdxbm .gt_last_grand_summary_row_top { border-bottom-style: double; border-bottom-width: 6px; border-bottom-color: #D3D3D3; }
 #zkmjizdxbm .gt_sourcenotes { color: #333333; background-color: #FFFFFF; border-bottom-style: none; border-bottom-width: 2px; border-bottom-color: #D3D3D3; border-left-style: none; border-left-width: 2px; border-left-color: #D3D3D3; border-right-style: none; border-right-width: 2px; border-right-color: #D3D3D3; }
 #zkmjizdxbm .gt_sourcenote { font-size: 90%; padding-top: 4px; padding-bottom: 4px; padding-left: 5px; padding-right: 5px; text-align: left; }
 #zkmjizdxbm .gt_left { text-align: left; }
 #zkmjizdxbm .gt_center { text-align: center; }
 #zkmjizdxbm .gt_right { text-align: right; font-variant-numeric: tabular-nums; }
 #zkmjizdxbm .gt_font_normal { font-weight: normal; }
 #zkmjizdxbm .gt_font_bold { font-weight: bold; }
 #zkmjizdxbm .gt_font_italic { font-style: italic; }
 #zkmjizdxbm .gt_super { font-size: 65%; }
 #zkmjizdxbm .gt_footnotes { color: font-color(#FFFFFF); background-color: #FFFFFF; border-bottom-style: none; border-bottom-width: 2px; border-bottom-color: #D3D3D3; border-left-style: none; border-left-width: 2px; border-left-color: #D3D3D3; border-right-style: none; border-right-width: 2px; border-right-color: #D3D3D3; }
 #zkmjizdxbm .gt_footnote { margin: 0px; font-size: 90%; padding-top: 4px; padding-bottom: 4px; padding-left: 5px; padding-right: 5px; }
 #zkmjizdxbm .gt_sourcenotes { color: #333333; background-color: #FFFFFF; border-bottom-style: none; border-bottom-width: 2px; border-bottom-color: #D3D3D3; border-left-style: none; border-left-width: 2px; border-left-color: #D3D3D3; border-right-style: none; border-right-width: 2px; border-right-color: #D3D3D3; }
 #zkmjizdxbm .gt_sourcenote { font-size: 90%; padding-top: 4px; padding-bottom: 4px; padding-left: 5px; padding-right: 5px; text-align: left; }
 #zkmjizdxbm .gt_footnote_marks { font-size: 75%; vertical-align: 0.4em; position: initial; }
 #zkmjizdxbm .gt_asterisk { font-size: 100%; vertical-align: 0; }
 
</style>

<table class="gt_table" data-quarto-disable-processing="false" data-quarto-bootstrap="false">
<thead>
<tr class="gt_heading">
<th colspan="6" class="gt_heading gt_title gt_font_normal">Numbers at Risk</th>
</tr>
<tr class="gt_heading">
<th colspan="6" class="gt_heading gt_subtitle gt_font_normal gt_bottom_border">Count of subjects at risk at each time point</th>
</tr>
<tr class="gt_col_headings">
<th id="strata" class="gt_col_heading gt_columns_bottom_border gt_left" scope="col">strata</th>
<th id="0.0" class="gt_col_heading gt_columns_bottom_border gt_right" scope="col">0.0</th>
<th id="250.0" class="gt_col_heading gt_columns_bottom_border gt_right" scope="col">250.0</th>
<th id="500.0" class="gt_col_heading gt_columns_bottom_border gt_right" scope="col">500.0</th>
<th id="750.0" class="gt_col_heading gt_columns_bottom_border gt_right" scope="col">750.0</th>
<th id="1000.0" class="gt_col_heading gt_columns_bottom_border gt_right" scope="col">1000.0</th>
</tr>
</thead>
<tbody class="gt_table_body">
<tr>
<td class="gt_row gt_left">1</td>
<td class="gt_row gt_right">138</td>
<td class="gt_row gt_right">62</td>
<td class="gt_row gt_right">20</td>
<td class="gt_row gt_right">7</td>
<td class="gt_row gt_right">2</td>
</tr>
<tr>
<td class="gt_row gt_left">2</td>
<td class="gt_row gt_right">90</td>
<td class="gt_row gt_right">53</td>
<td class="gt_row gt_right">21</td>
<td class="gt_row gt_right">3</td>
<td class="gt_row gt_right">0</td>
</tr>
</tbody>
</table>
