This notebook contains examples that show how to visualize the Titanic data set using Altair.
import seaborn.apionly as sns
import altair.api as alt
import pandas as pd
alt.use_renderer('lightning')
Running local mode, some functionality limited.
df = sns.load_dataset('titanic')
df = df.dropna()
df.head()
survived | pclass | sex | age | sibsp | parch | fare | embarked | class | who | adult_male | deck | embark_town | alive | alone | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 1 | 1 | female | 38 | 1 | 0 | 71.2833 | C | First | woman | False | C | Cherbourg | yes | False |
3 | 1 | 1 | female | 35 | 1 | 0 | 53.1000 | S | First | woman | False | C | Southampton | yes | False |
6 | 0 | 1 | male | 54 | 0 | 0 | 51.8625 | S | First | man | True | E | Southampton | no | True |
10 | 1 | 3 | female | 4 | 1 | 1 | 16.7000 | S | Third | child | False | G | Southampton | yes | False |
11 | 1 | 1 | female | 58 | 0 | 0 | 26.5500 | S | First | woman | False | C | Southampton | yes | True |
Here is a basic scatterplot of the age
and fare
:
v1 = alt.Viz(df).encode(x='age', y='fare').point()
v1.render()
Facet the rows by the categorical column sex
:
v2 = alt.Viz(df).encode(x='age', y='fare', row='sex').point()
v2.render()
Add color based grouping on the suvived
column. Notice here, we are specifying that the survived
column is a nominal data type by adding the string :N
to the end of the column name. In Altair and vega-lite, there are two categorical data types:
Which of these isused will determine how values are mapped onto the visual properties.
v3 = alt.Viz(df).encode(x='age', y='fare', row='sex', color='survived:N').point()
v3.render()
A histogram is just an encoding with a default aggregation and count specified:
v4 = alt.Viz(df).hist(x='fare', color='survived:N', bins=30)
v4.render()
v4.encoding.x
{'type': 'Q', 'bin': {'maxbins': 30}, 'name': 'fare'}
v4.encoding.y
{'type': 'Q', 'bin': False, 'aggregate': 'count', 'name': 'fare'}