Altair

Python
Author

Nobukuni Hyakutake

Published

2025-04-24

1 散布図

# import altair with an abbreviated alias
import altair as alt

# load a sample dataset as a pandas DataFrame
from vega_datasets import data
cars = data.cars()
cars
                          Name  Miles_per_Gallon  ...       Year  Origin
0    chevrolet chevelle malibu              18.0  ... 1970-01-01     USA
1            buick skylark 320              15.0  ... 1970-01-01     USA
2           plymouth satellite              18.0  ... 1970-01-01     USA
3                amc rebel sst              16.0  ... 1970-01-01     USA
4                  ford torino              17.0  ... 1970-01-01     USA
..                         ...               ...  ...        ...     ...
401            ford mustang gl              27.0  ... 1982-01-01     USA
402                  vw pickup              44.0  ... 1982-01-01  Europe
403              dodge rampage              32.0  ... 1982-01-01     USA
404                ford ranger              28.0  ... 1982-01-01     USA
405                 chevy s-10              31.0  ... 1982-01-01     USA

[406 rows x 9 columns]
# make the chart
alt.Chart(cars).mark_point().encode(
    x='Horsepower',
    y='Miles_per_Gallon',
    color='Origin',
).interactive()
# make the chart
alt.Chart(cars).mark_point().encode(
    x='Horsepower',
    y='Miles_per_Gallon',
    color='Origin',
)

2 ヒストグラム

2.1 Movies

import altair as alt
from vega_datasets import data

source = data.movies.url
source
'https://cdn.jsdelivr.net/npm/vega-datasets@v1.29.0/data/movies.json'
alt.Chart(source).mark_bar().encode(
    alt.X("IMDB_Rating:Q", bin=True),
    y='count()',
)

2.2 Penguins-Adelie

library(tidyverse)
library(palmerpenguins)
df<-penguins |> drop_na()
write.csv(df,"penguins.csv",row.names = FALSE,na="")
import polars as pl
import math
penguins=pl.read_csv("penguins.csv")
penguins
shape: (333, 8)
species island bill_length_mm bill_depth_mm flipper_length_mm body_mass_g sex year
str str f64 f64 i64 i64 str i64
"Adelie" "Torgersen" 39.1 18.7 181 3750 "male" 2007
"Adelie" "Torgersen" 39.5 17.4 186 3800 "female" 2007
"Adelie" "Torgersen" 40.3 18.0 195 3250 "female" 2007
"Adelie" "Torgersen" 36.7 19.3 193 3450 "female" 2007
"Adelie" "Torgersen" 39.3 20.6 190 3650 "male" 2007
"Chinstrap" "Dream" 55.8 19.8 207 4000 "male" 2009
"Chinstrap" "Dream" 43.5 18.1 202 3400 "female" 2009
"Chinstrap" "Dream" 49.6 18.2 193 3775 "male" 2009
"Chinstrap" "Dream" 50.8 19.0 210 4100 "male" 2009
"Chinstrap" "Dream" 50.2 18.7 198 3775 "female" 2009
penguins_adelie=penguins.filter(pl.col("species")=="Adelie")
penguins_adelie
shape: (146, 8)
species island bill_length_mm bill_depth_mm flipper_length_mm body_mass_g sex year
str str f64 f64 i64 i64 str i64
"Adelie" "Torgersen" 39.1 18.7 181 3750 "male" 2007
"Adelie" "Torgersen" 39.5 17.4 186 3800 "female" 2007
"Adelie" "Torgersen" 40.3 18.0 195 3250 "female" 2007
"Adelie" "Torgersen" 36.7 19.3 193 3450 "female" 2007
"Adelie" "Torgersen" 39.3 20.6 190 3650 "male" 2007
"Adelie" "Dream" 36.6 18.4 184 3475 "female" 2009
"Adelie" "Dream" 36.0 17.8 195 3450 "female" 2009
"Adelie" "Dream" 37.8 18.1 193 3750 "male" 2009
"Adelie" "Dream" 36.0 17.1 187 3700 "female" 2009
"Adelie" "Dream" 41.5 18.5 201 4000 "male" 2009
g_width=100
g_height=g_width*2/(1+math.sqrt(5))
chart=alt.Chart(penguins_adelie).mark_bar().encode(
    alt.X("bill_length_mm", bin=True),
    y='count()',
).properties(
    width=g_width,
    height=g_height)
chart
chart.save('penguins_adelie.png', ppi=200)

保存したファイルを表示

2.3 Penguins-Facet by species

penguins=penguins.with_columns(pl.lit(48).alias("a"))
chart1=alt.Chart(penguins).mark_bar().encode(
    alt.X("bill_length_mm").bin(),
    y="count()",
    row="species"
).properties(
    width=g_width*1.5,
    height=g_height*1.5)
chart1
chart1.save('penguins_facet.png', ppi=200)

保存したファイルを表示

chart1=alt.Chart().mark_bar().encode(
    alt.X("bill_length_mm").bin(),
    y="count()",
).properties(
    width=g_width*1.5,
    height=g_height*1.5)
chart2=alt.Chart().mark_rule().encode(
  x="a"
)
chart=(chart1+chart2).facet(row="species",data=penguins)
chart
chart.save('penguins_facet_vline.png', ppi=200)

保存したファイルを表示

3 参考文献

4 Python version

import platform
"Python version "+platform.python_version()
'Python version 3.12.3'