Altair có dấu hình ảnh có thể được sử dụng nếu bạn muốn vẽ hình ảnh có sẵn tại một URL; ví dụ:
import altair as alt
import pandas as pd
source = pd.DataFrame.from_records([
{"x": 0.5, "y": 0.5, "img": "https://vega.github.io/vega-datasets/data/ffox.png"},
{"x": 1.5, "y": 1.5, "img": "https://vega.github.io/vega-datasets/data/gimp.png"},
{"x": 2.5, "y": 2.5, "img": "https://vega.github.io/vega-datasets/data/7zip.png"}
])
alt.Chart(source).mark_image(
width=50,
height=50
).encode(
x='x',
y='y',
url='img'
)
Altair không phù hợp lắm để hiển thị mảng dữ liệu 2 chiều dưới dạng hình ảnh, vì ngữ pháp được thiết kế chủ yếu để làm việc với dữ liệu dạng bảng có cấu trúc. Tuy nhiên, có thể thực hiện bằng cách sử dụng kết hợp các biến đổi flatten và biến đổi cửa sổ .
Dưới đây là một ví dụ sử dụng dữ liệu từ trang bạn liên kết đến:
import altair as alt
import pandas as pd
from sklearn.datasets import fetch_lfw_people
faces = fetch_lfw_people(min_faces_per_person=60)
data = pd.DataFrame({
'image': list(faces.images[:12]) # list of 2D arrays
})
alt.Chart(data).transform_window(
index='count()' # number each of the images
).transform_flatten(
['image'] # extract rows from each image
).transform_window(
row='count()', # number the rows...
groupby=['index'] # ...within each image
).transform_flatten(
['image'] # extract the values from each row
).transform_window(
column='count()', # number the columns...
groupby=['index', 'row'] # ...within each row & image
).mark_rect().encode(
alt.X('column:O', axis=None),
alt.Y('row:O', axis=None),
alt.Color('image:Q',
scale=alt.Scale(scheme=alt.SchemeParams('greys', extent=[1, 0])),
legend=None
),
alt.Facet('index:N', columns=4)
).properties(
width=100,
height=120
)