{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Intro"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This notebook accompanies the article at http://crosstab.io/articles/survival-plots. Please see the article for text explanations of each section."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Lifelines survival curve with Matplotlib"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"from lifelines.datasets import load_dd\n",
"from lifelines import KaplanMeierFitter\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" ctryname | \n",
" ehead | \n",
" duration | \n",
" observed | \n",
"
\n",
" \n",
" \n",
" \n",
" 1022 | \n",
" Mauritania | \n",
" Mustapha Ould Salek | \n",
" 1 | \n",
" 1 | \n",
"
\n",
" \n",
" 1565 | \n",
" Switzerland | \n",
" Ruth Dreifuss | \n",
" 1 | \n",
" 1 | \n",
"
\n",
" \n",
" 763 | \n",
" Ireland | \n",
" Eamon de Valera | \n",
" 2 | \n",
" 1 | \n",
"
\n",
" \n",
" 1722 | \n",
" United States of America | \n",
" Bill Clinton | \n",
" 8 | \n",
" 1 | \n",
"
\n",
" \n",
" 1416 | \n",
" Somalia | \n",
" Abdirizak Hussain | \n",
" 3 | \n",
" 1 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" ctryname ehead duration observed\n",
"1022 Mauritania Mustapha Ould Salek 1 1\n",
"1565 Switzerland Ruth Dreifuss 1 1\n",
"763 Ireland Eamon de Valera 2 1\n",
"1722 United States of America Bill Clinton 8 1\n",
"1416 Somalia Abdirizak Hussain 3 1"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data = load_dd()\n",
"data[['ctryname', 'ehead', 'duration', 'observed']].sample(5, random_state=19)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAEGCAYAAAB1iW6ZAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAAZUUlEQVR4nO3dfXBV9Z3H8fcXSEmFgBViaxMwLMWtFiy2qWjZsbZKiy4mtrUVamfrjiN1V1u3D+6gdnxA2tFlx4dOtVumPrSWlUW6amqDUJGWLqMotGgFag22aKgrIQtIpImJfPePe0mvyT333tzcx9/9vGYy3vOQc385mM/95XvO+f3M3RERkfI3otgNEBGR3FCgi4gEQoEuIhIIBbqISCAU6CIigRhVrDeeOHGiNzQ0FOvtRUTK0pYtW/a6e22ybUUL9IaGBjZv3lystxcRKUtmtitqm0ouIiKBUKCLiARCgS4iEoii1dBFpPT09vbS3t5Od3d3sZtS8aqrq6mvr6eqqirj71Ggi0i/9vZ2ampqaGhowMyK3ZyK5e50dnbS3t7OlClTMv6+tCUXM7vHzPaY2fMR283MvmtmbWb2nJl9aAjtFpES0t3dzYQJExTmRWZmTJgwYch/KWVSQ78PmJti+znAtPjXQuD7Q2qBiJQUhXlpyObfIW3Jxd03mFlDil2agR97bBzep8zsaDM7zt1fHXJrMnDjz7ax/c+vRzdmZh1fmDU5H28tIlLSclFDrwNeSVhuj68bFOhmtpBYL57Jk7MP3de7e5Ou39V5iNe7exXoIlKRCnrborsvc/dGd2+srU365Gpa15/3AVZfeUbSrxl143PcYhEptLFjx/a/bm1t5YQTTmDXrl3ccMMNmBltbW3922+//XbMLGdPnT/88MNs3769f/m6667j8ccfH/Zx9+/fz1133TXs46STi0DfDUxKWK6PrxMRydq6dev46le/yurVqzn++OMBmDFjBitWrOjf58EHH+QDH/hAzt5zYKAvXryYs88+e9jHLVSg56Lk0gJcYWYrgFnAgXzVz0WkcNJdr8rGSe8dx/XnpQ/gDRs2cOmll9La2srUqVP7159//vk88sgjfOtb32Lnzp2MHz8+7X3aa9eu5frrr6enp4epU6dy7733MnbsWBYtWkRLSwujRo3ik5/8JJ/5zGdoaWnhV7/6FUuWLOGnP/0pN910E/PmzeOCCy6goaGBBQsWsHr1akaNGsWyZcu4+uqraWtr46qrruKyyy6jq6uL5uZm9u3bR29vL0uWLKG5uZlFixaxc+dOZs6cyZw5c1i6dClLly5l5cqV9PT08OlPf5obb7xx2Oc3baCb2QPAmcBEM2sHrgeqANz9P4BW4FygDTgE/OOwWyUiFaunp4fzzz+fX/7yl7z//e9/27Zx48YxadIknn/+eR555BEuvPBC7r333shj7d27lyVLlvD4448zZswYbrnlFm699VYuv/xyHnroIX7/+99jZuzfv5+jjz6apqam/gBPZvLkyWzdupWvfe1rXHzxxWzcuJHu7m6mT5/OZZddRnV1NQ899BDjxo1j7969nHbaaTQ1NXHzzTfz/PPPs3XrViD2IfPiiy/y9NNP4+40NTWxYcMGzjjjjGGdu0zuclmQZrsDlw+rFSJScjLpSedDVVUVH/3oR7n77ru54447Bm2fP38+K1asYM2aNaxbty5loD/11FNs376d2bNnA/Dmm29y+umnM378eKqrq7nkkkuYN28e8+bNy6htTU1NQKz009XVRU1NDTU1NYwePZr9+/czZswYrrnmGjZs2MCIESPYvXs3r7322qDjrF27lrVr13LKKacA0NXVxYsvvpj/QBcRKaQRI0awcuVKzjrrLL7zne9wzTXXvG37vHnzuOqqq2hsbGTcuHEpj+XuzJkzhwceeGDQtqeffpp169axatUqvve97/HEE0+kbdvo0aP723jk9ZHlvr4+li9fTkdHB1u2bKGqqoqGhoakDwe5O1dffTVf/vKX077nUGhwLhEpOUcddRQ///nPWb58OXffffegbbfccgvXXntt2uOcdtppbNy4sf/OmDfeeIM//OEPdHV1ceDAAc4991xuu+02nn32WQBqamo4ePBg1u0+cOAAxx57LFVVVaxfv55du3YlPe6nPvUp7rnnHrq6ugDYvXs3e/bsyfp9j1APXURK0jHHHMNjjz3GGWecwcDbnOfPn5/RMWpra7nvvvtYsGABPT09ACxZsoSamhqam5vp7u7G3bn11lv7j3vppZfy3e9+l1WrVg25zRdddBHnnXceM2bMoLGxsf8awIQJE5g9ezbTp0/nnHPOYenSpezYsYPTTz8diN2q+ZOf/IRjjz12yO+ZyGIl8MJrbGz0XM9YdOEPnuT17l5WXzm8OpRI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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"kmf = KaplanMeierFitter()\n",
"kmf.fit(durations=data['duration'], event_observed=data['observed'])\n",
"\n",
"kmf.plot_survival_function()\n",
"plt.savefig(\"matplotlib_survival.png\", dpi=500, bbox_inches='tight')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Plotly survival curve, with confidence band"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"import plotly.graph_objs as go"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
" \n",
" "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.plotly.v1+json": {
"config": {
"plotlyServerURL": "https://plot.ly"
},
"data": [
{
"line": {
"color": "rgb(31, 119, 180)",
"shape": "hv",
"width": 3
},
"type": "scatter",
"x": [
0,
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
31,
32,
33,
34,
35,
36,
38,
39,
40,
42,
44,
46,
47
],
"y": [
1,
0.7217920353982306,
0.601973405419913,
0.5109286714658565,
0.4188353553744799,
0.33400794162774977,
0.2809020764317058,
0.25682475559470225,
0.22197537872934456,
0.20514692041412344,
0.18134987764608512,
0.16119989124096465,
0.15033248284269746,
0.13919674337286803,
0.12489570809483362,
0.11784514392818979,
0.11352055149045805,
0.10800984510742613,
0.09979170471881763,
0.09363172294605107,
0.09099420962362711,
0.08547940904037703,
0.07847290010264123,
0.07411329454138338,
0.07108826211112283,
0.0695428651087071,
0.06623130010353057,
0.06274544220334474,
0.060899988020893414,
0.05697095653567449,
0.05275088568118007,
0.050353118150217334,
0.04315981555732913,
0.03836428049540368,
0.03836428049540368,
0.030143363246388614,
0.030143363246388614,
0.030143363246388614,
0.030143363246388614,
0.030143363246388614,
0.030143363246388614,
0.030143363246388614,
0.030143363246388614,
0.015071681623194312
]
}
],
"layout": {
"template": {
"data": {
"bar": [
{
"error_x": {
"color": "#2a3f5f"
},
"error_y": {
"color": "#2a3f5f"
},
"marker": {
"line": {
"color": "#E5ECF6",
"width": 0.5
},
"pattern": {
"fillmode": "overlay",
"size": 10,
"solidity": 0.2
}
},
"type": "bar"
}
],
"barpolar": [
{
"marker": {
"line": {
"color": "#E5ECF6",
"width": 0.5
},
"pattern": {
"fillmode": "overlay",
"size": 10,
"solidity": 0.2
}
},
"type": "barpolar"
}
],
"carpet": [
{
"aaxis": {
"endlinecolor": "#2a3f5f",
"gridcolor": "white",
"linecolor": "white",
"minorgridcolor": "white",
"startlinecolor": "#2a3f5f"
},
"baxis": {
"endlinecolor": "#2a3f5f",
"gridcolor": "white",
"linecolor": "white",
"minorgridcolor": "white",
"startlinecolor": "#2a3f5f"
},
"type": "carpet"
}
],
"choropleth": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"type": "choropleth"
}
],
"contour": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "contour"
}
],
"contourcarpet": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"type": "contourcarpet"
}
],
"heatmap": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "heatmap"
}
],
"heatmapgl": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "heatmapgl"
}
],
"histogram": [
{
"marker": {
"pattern": {
"fillmode": "overlay",
"size": 10,
"solidity": 0.2
}
},
"type": "histogram"
}
],
"histogram2d": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "histogram2d"
}
],
"histogram2dcontour": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "histogram2dcontour"
}
],
"mesh3d": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"type": "mesh3d"
}
],
"parcoords": [
{
"line": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "parcoords"
}
],
"pie": [
{
"automargin": true,
"type": "pie"
}
],
"scatter": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scatter"
}
],
"scatter3d": [
{
"line": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scatter3d"
}
],
"scattercarpet": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattercarpet"
}
],
"scattergeo": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattergeo"
}
],
"scattergl": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattergl"
}
],
"scattermapbox": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattermapbox"
}
],
"scatterpolar": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scatterpolar"
}
],
"scatterpolargl": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scatterpolargl"
}
],
"scatterternary": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scatterternary"
}
],
"surface": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "surface"
}
],
"table": [
{
"cells": {
"fill": {
"color": "#EBF0F8"
},
"line": {
"color": "white"
}
},
"header": {
"fill": {
"color": "#C8D4E3"
},
"line": {
"color": "white"
}
},
"type": "table"
}
]
},
"layout": {
"annotationdefaults": {
"arrowcolor": "#2a3f5f",
"arrowhead": 0,
"arrowwidth": 1
},
"autotypenumbers": "strict",
"coloraxis": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"colorscale": {
"diverging": [
[
0,
"#8e0152"
],
[
0.1,
"#c51b7d"
],
[
0.2,
"#de77ae"
],
[
0.3,
"#f1b6da"
],
[
0.4,
"#fde0ef"
],
[
0.5,
"#f7f7f7"
],
[
0.6,
"#e6f5d0"
],
[
0.7,
"#b8e186"
],
[
0.8,
"#7fbc41"
],
[
0.9,
"#4d9221"
],
[
1,
"#276419"
]
],
"sequential": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"sequentialminus": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
]
},
"colorway": [
"#636efa",
"#EF553B",
"#00cc96",
"#ab63fa",
"#FFA15A",
"#19d3f3",
"#FF6692",
"#B6E880",
"#FF97FF",
"#FECB52"
],
"font": {
"color": "#2a3f5f"
},
"geo": {
"bgcolor": "white",
"lakecolor": "white",
"landcolor": "#E5ECF6",
"showlakes": true,
"showland": true,
"subunitcolor": "white"
},
"hoverlabel": {
"align": "left"
},
"hovermode": "closest",
"mapbox": {
"style": "light"
},
"paper_bgcolor": "white",
"plot_bgcolor": "#E5ECF6",
"polar": {
"angularaxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
},
"bgcolor": "#E5ECF6",
"radialaxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
}
},
"scene": {
"xaxis": {
"backgroundcolor": "#E5ECF6",
"gridcolor": "white",
"gridwidth": 2,
"linecolor": "white",
"showbackground": true,
"ticks": "",
"zerolinecolor": "white"
},
"yaxis": {
"backgroundcolor": "#E5ECF6",
"gridcolor": "white",
"gridwidth": 2,
"linecolor": "white",
"showbackground": true,
"ticks": "",
"zerolinecolor": "white"
},
"zaxis": {
"backgroundcolor": "#E5ECF6",
"gridcolor": "white",
"gridwidth": 2,
"linecolor": "white",
"showbackground": true,
"ticks": "",
"zerolinecolor": "white"
}
},
"shapedefaults": {
"line": {
"color": "#2a3f5f"
}
},
"ternary": {
"aaxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
},
"baxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
},
"bgcolor": "#E5ECF6",
"caxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
}
},
"title": {
"x": 0.05
},
"xaxis": {
"automargin": true,
"gridcolor": "white",
"linecolor": "white",
"ticks": "",
"title": {
"standoff": 15
},
"zerolinecolor": "white",
"zerolinewidth": 2
},
"yaxis": {
"automargin": true,
"gridcolor": "white",
"linecolor": "white",
"ticks": "",
"title": {
"standoff": 15
},
"zerolinecolor": "white",
"zerolinewidth": 2
}
}
}
}
},
"text/html": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig = go.Figure()\n",
"\n",
"fig.add_trace(go.Scatter(\n",
" x=kmf.survival_function_.index, y=kmf.survival_function_['KM_estimate'],\n",
" line=dict(shape='hv', width=3, color='rgb(31, 119, 180)'),\n",
"))"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.plotly.v1+json": {
"config": {
"plotlyServerURL": "https://plot.ly"
},
"data": [
{
"line": {
"color": "rgb(31, 119, 180)",
"shape": "hv",
"width": 3
},
"type": "scatter",
"x": [
0,
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
31,
32,
33,
34,
35,
36,
38,
39,
40,
42,
44,
46,
47
],
"y": [
1,
0.7217920353982306,
0.601973405419913,
0.5109286714658565,
0.4188353553744799,
0.33400794162774977,
0.2809020764317058,
0.25682475559470225,
0.22197537872934456,
0.20514692041412344,
0.18134987764608512,
0.16119989124096465,
0.15033248284269746,
0.13919674337286803,
0.12489570809483362,
0.11784514392818979,
0.11352055149045805,
0.10800984510742613,
0.09979170471881763,
0.09363172294605107,
0.09099420962362711,
0.08547940904037703,
0.07847290010264123,
0.07411329454138338,
0.07108826211112283,
0.0695428651087071,
0.06623130010353057,
0.06274544220334474,
0.060899988020893414,
0.05697095653567449,
0.05275088568118007,
0.050353118150217334,
0.04315981555732913,
0.03836428049540368,
0.03836428049540368,
0.030143363246388614,
0.030143363246388614,
0.030143363246388614,
0.030143363246388614,
0.030143363246388614,
0.030143363246388614,
0.030143363246388614,
0.030143363246388614,
0.015071681623194312
]
},
{
"line": {
"shape": "hv",
"width": 0
},
"type": "scatter",
"x": [
0,
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
31,
32,
33,
34,
35,
36,
38,
39,
40,
42,
44,
46,
47
],
"y": [
1,
0.7418405026128462,
0.6243081417794504,
0.5341260728695746,
0.44224190161091564,
0.35695157606717204,
0.30321755694422586,
0.27876912435724793,
0.243267756460856,
0.2260948962712192,
0.2017226122127899,
0.18105517189722414,
0.16987775443944234,
0.1583972752695038,
0.14360332192684383,
0.13631067005221947,
0.1318582186417185,
0.12617715297225282,
0.1177257528085712,
0.11139004664092718,
0.10869260410428144,
0.10306322112484118,
0.09586620385295194,
0.09137800454309,
0.08826774116604848,
0.08667881023258762,
0.0833059818748551,
0.07976797368946069,
0.07790784034319681,
0.07397626778318535,
0.06977713786600818,
0.06745740808621378,
0.06031327926204412,
0.05539280632215308,
0.05539280632215308,
0.04704723975544759,
0.04704723975544759,
0.04704723975544759,
0.04704723975544759,
0.04704723975544759,
0.04704723975544759,
0.04704723975544759,
0.04704723975544759,
0.05191713071852304
]
},
{
"fill": "tonexty",
"fillcolor": "rgba(31, 119, 180, 0.3)",
"line": {
"shape": "hv",
"width": 0
},
"type": "scatter",
"x": [
0,
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
31,
32,
33,
34,
35,
36,
38,
39,
40,
42,
44,
46,
47
],
"y": [
1,
0.7005223524729057,
0.5788048046541282,
0.4872046786374157,
0.39523259328183086,
0.311202849885075,
0.258957661487922,
0.2353659084993257,
0.20134806583193213,
0.18496004292076088,
0.16188437627403687,
0.14239336505835412,
0.13191947646296973,
0.12122021718815992,
0.1075402279588068,
0.10080353603765198,
0.09665742579327567,
0.09138508703862225,
0.08351653885142839,
0.077630318366034,
0.07510105456057892,
0.0698122087149546,
0.06314666286827482,
0.05901890571270464,
0.05615795963234104,
0.054698605204242974,
0.051553351331747814,
0.048243631197534595,
0.046486952677053196,
0.042740125533064645,
0.038724240157600266,
0.036412318345537105,
0.029677507048493274,
0.025359921365590336,
0.025359921365590336,
0.01810044991446459,
0.01810044991446459,
0.01810044991446459,
0.01810044991446459,
0.01810044991446459,
0.01810044991446459,
0.01810044991446459,
0.01810044991446459,
0.002608688595916926
]
}
],
"layout": {
"showlegend": false,
"template": {
"data": {
"bar": [
{
"error_x": {
"color": "rgb(36,36,36)"
},
"error_y": {
"color": "rgb(36,36,36)"
},
"marker": {
"line": {
"color": "white",
"width": 0.5
},
"pattern": {
"fillmode": "overlay",
"size": 10,
"solidity": 0.2
}
},
"type": "bar"
}
],
"barpolar": [
{
"marker": {
"line": {
"color": "white",
"width": 0.5
},
"pattern": {
"fillmode": "overlay",
"size": 10,
"solidity": 0.2
}
},
"type": "barpolar"
}
],
"carpet": [
{
"aaxis": {
"endlinecolor": "rgb(36,36,36)",
"gridcolor": "white",
"linecolor": "white",
"minorgridcolor": "white",
"startlinecolor": "rgb(36,36,36)"
},
"baxis": {
"endlinecolor": "rgb(36,36,36)",
"gridcolor": "white",
"linecolor": "white",
"minorgridcolor": "white",
"startlinecolor": "rgb(36,36,36)"
},
"type": "carpet"
}
],
"choropleth": [
{
"colorbar": {
"outlinewidth": 1,
"tickcolor": "rgb(36,36,36)",
"ticks": "outside"
},
"type": "choropleth"
}
],
"contour": [
{
"colorbar": {
"outlinewidth": 1,
"tickcolor": "rgb(36,36,36)",
"ticks": "outside"
},
"colorscale": [
[
0,
"#440154"
],
[
0.1111111111111111,
"#482878"
],
[
0.2222222222222222,
"#3e4989"
],
[
0.3333333333333333,
"#31688e"
],
[
0.4444444444444444,
"#26828e"
],
[
0.5555555555555556,
"#1f9e89"
],
[
0.6666666666666666,
"#35b779"
],
[
0.7777777777777778,
"#6ece58"
],
[
0.8888888888888888,
"#b5de2b"
],
[
1,
"#fde725"
]
],
"type": "contour"
}
],
"contourcarpet": [
{
"colorbar": {
"outlinewidth": 1,
"tickcolor": "rgb(36,36,36)",
"ticks": "outside"
},
"type": "contourcarpet"
}
],
"heatmap": [
{
"colorbar": {
"outlinewidth": 1,
"tickcolor": "rgb(36,36,36)",
"ticks": "outside"
},
"colorscale": [
[
0,
"#440154"
],
[
0.1111111111111111,
"#482878"
],
[
0.2222222222222222,
"#3e4989"
],
[
0.3333333333333333,
"#31688e"
],
[
0.4444444444444444,
"#26828e"
],
[
0.5555555555555556,
"#1f9e89"
],
[
0.6666666666666666,
"#35b779"
],
[
0.7777777777777778,
"#6ece58"
],
[
0.8888888888888888,
"#b5de2b"
],
[
1,
"#fde725"
]
],
"type": "heatmap"
}
],
"heatmapgl": [
{
"colorbar": {
"outlinewidth": 1,
"tickcolor": "rgb(36,36,36)",
"ticks": "outside"
},
"colorscale": [
[
0,
"#440154"
],
[
0.1111111111111111,
"#482878"
],
[
0.2222222222222222,
"#3e4989"
],
[
0.3333333333333333,
"#31688e"
],
[
0.4444444444444444,
"#26828e"
],
[
0.5555555555555556,
"#1f9e89"
],
[
0.6666666666666666,
"#35b779"
],
[
0.7777777777777778,
"#6ece58"
],
[
0.8888888888888888,
"#b5de2b"
],
[
1,
"#fde725"
]
],
"type": "heatmapgl"
}
],
"histogram": [
{
"marker": {
"line": {
"color": "white",
"width": 0.6
}
},
"type": "histogram"
}
],
"histogram2d": [
{
"colorbar": {
"outlinewidth": 1,
"tickcolor": "rgb(36,36,36)",
"ticks": "outside"
},
"colorscale": [
[
0,
"#440154"
],
[
0.1111111111111111,
"#482878"
],
[
0.2222222222222222,
"#3e4989"
],
[
0.3333333333333333,
"#31688e"
],
[
0.4444444444444444,
"#26828e"
],
[
0.5555555555555556,
"#1f9e89"
],
[
0.6666666666666666,
"#35b779"
],
[
0.7777777777777778,
"#6ece58"
],
[
0.8888888888888888,
"#b5de2b"
],
[
1,
"#fde725"
]
],
"type": "histogram2d"
}
],
"histogram2dcontour": [
{
"colorbar": {
"outlinewidth": 1,
"tickcolor": "rgb(36,36,36)",
"ticks": "outside"
},
"colorscale": [
[
0,
"#440154"
],
[
0.1111111111111111,
"#482878"
],
[
0.2222222222222222,
"#3e4989"
],
[
0.3333333333333333,
"#31688e"
],
[
0.4444444444444444,
"#26828e"
],
[
0.5555555555555556,
"#1f9e89"
],
[
0.6666666666666666,
"#35b779"
],
[
0.7777777777777778,
"#6ece58"
],
[
0.8888888888888888,
"#b5de2b"
],
[
1,
"#fde725"
]
],
"type": "histogram2dcontour"
}
],
"mesh3d": [
{
"colorbar": {
"outlinewidth": 1,
"tickcolor": "rgb(36,36,36)",
"ticks": "outside"
},
"type": "mesh3d"
}
],
"parcoords": [
{
"line": {
"colorbar": {
"outlinewidth": 1,
"tickcolor": "rgb(36,36,36)",
"ticks": "outside"
}
},
"type": "parcoords"
}
],
"pie": [
{
"automargin": true,
"type": "pie"
}
],
"scatter": [
{
"marker": {
"colorbar": {
"outlinewidth": 1,
"tickcolor": "rgb(36,36,36)",
"ticks": "outside"
}
},
"type": "scatter"
}
],
"scatter3d": [
{
"line": {
"colorbar": {
"outlinewidth": 1,
"tickcolor": "rgb(36,36,36)",
"ticks": "outside"
}
},
"marker": {
"colorbar": {
"outlinewidth": 1,
"tickcolor": "rgb(36,36,36)",
"ticks": "outside"
}
},
"type": "scatter3d"
}
],
"scattercarpet": [
{
"marker": {
"colorbar": {
"outlinewidth": 1,
"tickcolor": "rgb(36,36,36)",
"ticks": "outside"
}
},
"type": "scattercarpet"
}
],
"scattergeo": [
{
"marker": {
"colorbar": {
"outlinewidth": 1,
"tickcolor": "rgb(36,36,36)",
"ticks": "outside"
}
},
"type": "scattergeo"
}
],
"scattergl": [
{
"marker": {
"colorbar": {
"outlinewidth": 1,
"tickcolor": "rgb(36,36,36)",
"ticks": "outside"
}
},
"type": "scattergl"
}
],
"scattermapbox": [
{
"marker": {
"colorbar": {
"outlinewidth": 1,
"tickcolor": "rgb(36,36,36)",
"ticks": "outside"
}
},
"type": "scattermapbox"
}
],
"scatterpolar": [
{
"marker": {
"colorbar": {
"outlinewidth": 1,
"tickcolor": "rgb(36,36,36)",
"ticks": "outside"
}
},
"type": "scatterpolar"
}
],
"scatterpolargl": [
{
"marker": {
"colorbar": {
"outlinewidth": 1,
"tickcolor": "rgb(36,36,36)",
"ticks": "outside"
}
},
"type": "scatterpolargl"
}
],
"scatterternary": [
{
"marker": {
"colorbar": {
"outlinewidth": 1,
"tickcolor": "rgb(36,36,36)",
"ticks": "outside"
}
},
"type": "scatterternary"
}
],
"surface": [
{
"colorbar": {
"outlinewidth": 1,
"tickcolor": "rgb(36,36,36)",
"ticks": "outside"
},
"colorscale": [
[
0,
"#440154"
],
[
0.1111111111111111,
"#482878"
],
[
0.2222222222222222,
"#3e4989"
],
[
0.3333333333333333,
"#31688e"
],
[
0.4444444444444444,
"#26828e"
],
[
0.5555555555555556,
"#1f9e89"
],
[
0.6666666666666666,
"#35b779"
],
[
0.7777777777777778,
"#6ece58"
],
[
0.8888888888888888,
"#b5de2b"
],
[
1,
"#fde725"
]
],
"type": "surface"
}
],
"table": [
{
"cells": {
"fill": {
"color": "rgb(237,237,237)"
},
"line": {
"color": "white"
}
},
"header": {
"fill": {
"color": "rgb(217,217,217)"
},
"line": {
"color": "white"
}
},
"type": "table"
}
]
},
"layout": {
"annotationdefaults": {
"arrowhead": 0,
"arrowwidth": 1
},
"autotypenumbers": "strict",
"coloraxis": {
"colorbar": {
"outlinewidth": 1,
"tickcolor": "rgb(36,36,36)",
"ticks": "outside"
}
},
"colorscale": {
"diverging": [
[
0,
"rgb(103,0,31)"
],
[
0.1,
"rgb(178,24,43)"
],
[
0.2,
"rgb(214,96,77)"
],
[
0.3,
"rgb(244,165,130)"
],
[
0.4,
"rgb(253,219,199)"
],
[
0.5,
"rgb(247,247,247)"
],
[
0.6,
"rgb(209,229,240)"
],
[
0.7,
"rgb(146,197,222)"
],
[
0.8,
"rgb(67,147,195)"
],
[
0.9,
"rgb(33,102,172)"
],
[
1,
"rgb(5,48,97)"
]
],
"sequential": [
[
0,
"#440154"
],
[
0.1111111111111111,
"#482878"
],
[
0.2222222222222222,
"#3e4989"
],
[
0.3333333333333333,
"#31688e"
],
[
0.4444444444444444,
"#26828e"
],
[
0.5555555555555556,
"#1f9e89"
],
[
0.6666666666666666,
"#35b779"
],
[
0.7777777777777778,
"#6ece58"
],
[
0.8888888888888888,
"#b5de2b"
],
[
1,
"#fde725"
]
],
"sequentialminus": [
[
0,
"#440154"
],
[
0.1111111111111111,
"#482878"
],
[
0.2222222222222222,
"#3e4989"
],
[
0.3333333333333333,
"#31688e"
],
[
0.4444444444444444,
"#26828e"
],
[
0.5555555555555556,
"#1f9e89"
],
[
0.6666666666666666,
"#35b779"
],
[
0.7777777777777778,
"#6ece58"
],
[
0.8888888888888888,
"#b5de2b"
],
[
1,
"#fde725"
]
]
},
"colorway": [
"#1F77B4",
"#FF7F0E",
"#2CA02C",
"#D62728",
"#9467BD",
"#8C564B",
"#E377C2",
"#7F7F7F",
"#BCBD22",
"#17BECF"
],
"font": {
"color": "rgb(36,36,36)"
},
"geo": {
"bgcolor": "white",
"lakecolor": "white",
"landcolor": "white",
"showlakes": true,
"showland": true,
"subunitcolor": "white"
},
"hoverlabel": {
"align": "left"
},
"hovermode": "closest",
"mapbox": {
"style": "light"
},
"paper_bgcolor": "white",
"plot_bgcolor": "white",
"polar": {
"angularaxis": {
"gridcolor": "rgb(232,232,232)",
"linecolor": "rgb(36,36,36)",
"showgrid": false,
"showline": true,
"ticks": "outside"
},
"bgcolor": "white",
"radialaxis": {
"gridcolor": "rgb(232,232,232)",
"linecolor": "rgb(36,36,36)",
"showgrid": false,
"showline": true,
"ticks": "outside"
}
},
"scene": {
"xaxis": {
"backgroundcolor": "white",
"gridcolor": "rgb(232,232,232)",
"gridwidth": 2,
"linecolor": "rgb(36,36,36)",
"showbackground": true,
"showgrid": false,
"showline": true,
"ticks": "outside",
"zeroline": false,
"zerolinecolor": "rgb(36,36,36)"
},
"yaxis": {
"backgroundcolor": "white",
"gridcolor": "rgb(232,232,232)",
"gridwidth": 2,
"linecolor": "rgb(36,36,36)",
"showbackground": true,
"showgrid": false,
"showline": true,
"ticks": "outside",
"zeroline": false,
"zerolinecolor": "rgb(36,36,36)"
},
"zaxis": {
"backgroundcolor": "white",
"gridcolor": "rgb(232,232,232)",
"gridwidth": 2,
"linecolor": "rgb(36,36,36)",
"showbackground": true,
"showgrid": false,
"showline": true,
"ticks": "outside",
"zeroline": false,
"zerolinecolor": "rgb(36,36,36)"
}
},
"shapedefaults": {
"fillcolor": "black",
"line": {
"width": 0
},
"opacity": 0.3
},
"ternary": {
"aaxis": {
"gridcolor": "rgb(232,232,232)",
"linecolor": "rgb(36,36,36)",
"showgrid": false,
"showline": true,
"ticks": "outside"
},
"baxis": {
"gridcolor": "rgb(232,232,232)",
"linecolor": "rgb(36,36,36)",
"showgrid": false,
"showline": true,
"ticks": "outside"
},
"bgcolor": "white",
"caxis": {
"gridcolor": "rgb(232,232,232)",
"linecolor": "rgb(36,36,36)",
"showgrid": false,
"showline": true,
"ticks": "outside"
}
},
"title": {
"x": 0.05
},
"xaxis": {
"automargin": true,
"gridcolor": "rgb(232,232,232)",
"linecolor": "rgb(36,36,36)",
"showgrid": false,
"showline": true,
"ticks": "outside",
"title": {
"standoff": 15
},
"zeroline": false,
"zerolinecolor": "rgb(36,36,36)"
},
"yaxis": {
"automargin": true,
"gridcolor": "rgb(232,232,232)",
"linecolor": "rgb(36,36,36)",
"showgrid": false,
"showline": true,
"ticks": "outside",
"title": {
"standoff": 15
},
"zeroline": false,
"zerolinecolor": "rgb(36,36,36)"
}
}
},
"xaxis": {
"title": {
"text": "Duration"
}
},
"yaxis": {
"title": {
"text": "Survival probability"
}
}
}
},
"text/html": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig.add_trace(go.Scatter(\n",
" x=kmf.confidence_interval_.index, y=kmf.confidence_interval_['KM_estimate_upper_0.95'],\n",
" line=dict(shape='hv', width=0),\n",
"))\n",
"\n",
"fig.add_trace(go.Scatter(\n",
" x=kmf.confidence_interval_.index, y=kmf.confidence_interval_['KM_estimate_lower_0.95'],\n",
" line=dict(shape='hv', width=0),\n",
" fill='tonexty',\n",
" fillcolor='rgba(31, 119, 180, 0.3)',\n",
"))\n",
"\n",
"# Most of this styling is for the published version of the plot. It doesn't look nice in the notebook.\n",
"fig.update_layout(\n",
" xaxis_title=\"Duration\",\n",
" yaxis_title=\"Survival probability\",\n",
" # margin=go.layout.Margin(l=70, r=10, t=10, b=60),\n",
" # font_size=32,\n",
" showlegend=False,\n",
" template=\"simple_white\",\n",
" # xaxis_title_font_size=42,\n",
" # yaxis_title_font_size=42\n",
")\n",
"\n",
"fig.show()\n",
"# fig.write_image(\"plotly_survival.png\", height=1400, width=1400)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Altair survival curve, with confidence band"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"import altair as alt"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" timeline | \n",
" KM_estimate | \n",
" lower_bound | \n",
" upper_bound | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 0.0 | \n",
" 1.000000 | \n",
" 1.000000 | \n",
" 1.000000 | \n",
"
\n",
" \n",
" 1 | \n",
" 1.0 | \n",
" 0.721792 | \n",
" 0.700522 | \n",
" 0.741841 | \n",
"
\n",
" \n",
" 2 | \n",
" 2.0 | \n",
" 0.601973 | \n",
" 0.578805 | \n",
" 0.624308 | \n",
"
\n",
" \n",
" 3 | \n",
" 3.0 | \n",
" 0.510929 | \n",
" 0.487205 | \n",
" 0.534126 | \n",
"
\n",
" \n",
" 4 | \n",
" 4.0 | \n",
" 0.418835 | \n",
" 0.395233 | \n",
" 0.442242 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" timeline KM_estimate lower_bound upper_bound\n",
"0 0.0 1.000000 1.000000 1.000000\n",
"1 1.0 0.721792 0.700522 0.741841\n",
"2 2.0 0.601973 0.578805 0.624308\n",
"3 3.0 0.510929 0.487205 0.534126\n",
"4 4.0 0.418835 0.395233 0.442242"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_plot = kmf.survival_function_.copy(deep=True)\n",
"df_plot['lower_bound'] = kmf.confidence_interval_['KM_estimate_lower_0.95']\n",
"df_plot['upper_bound'] = kmf.confidence_interval_['KM_estimate_upper_0.95']\n",
"df_plot.reset_index(inplace=True)\n",
"df_plot.head()"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
""
],
"text/plain": [
"alt.LayerChart(...)"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"line = (\n",
" alt.Chart(df_plot)\n",
" .mark_line(interpolate='step-after')\n",
" .encode(\n",
" x=alt.X(\"timeline\", axis=alt.Axis(title=\"Duration\")),\n",
" y=alt.Y(\"KM_estimate\", axis=alt.Axis(title=\"Survival probability\"))\n",
" )\n",
")\n",
"\n",
"band = line.mark_area(opacity=0.4, interpolate='step-after').encode(\n",
" x='timeline',\n",
" y='lower_bound',\n",
" y2='upper_bound'\n",
")\n",
"\n",
"fig = line + band\n",
"# fig.save(\"altair_survival.svg\")\n",
"fig"
]
}
],
"metadata": {
"interpreter": {
"hash": "9a976e94fa7bfab0a6704bf36df45769b3cf573a67615bd27b690e7be01e42ec"
},
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.10"
}
},
"nbformat": 4,
"nbformat_minor": 2
}