Altair'de görüntü verilerini çizebilir miyiz?


Yanıtlar:


16

Altair , bir URL'de bulunan görüntüleri çizmek istiyorsanız kullanılabilecek bir görüntü işaretine sahiptir; Örneğin:

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'
)

resim açıklamasını buraya girin

Altair, 2 boyutlu veri dizilerini görüntü olarak görüntülemek için çok uygun değildir, çünkü dilbilgisi öncelikle yapılandırılmış tablo verileriyle çalışacak şekilde tasarlanmıştır. Bununla birlikte, düzleştirilmiş dönüşümler ve pencere dönüşümlerinin bir kombinasyonunu kullanarak yapmak mümkündür .

Bağlantı verdiğiniz sayfadaki verileri kullanan bir örnek:

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
)

resim açıklamasını buraya girin


Teşekkürler @jakevdp. Siz ve kitaplarınız harikasınız. Altair-viz'de verileri panda veri çerçevesine dönüştürmek zorunda kalmadan doğrudan sayısal dizilerden görselleştirmemizi sağlayacak yeni özellikler bekleyebilir miyiz yoksa uzun süre matplotlib'e güvenmek zorunda mıyız?
arjan-hada

Hayır, Altair'in dilbilgisi yapılandırılmış, tablo verisine çok yakından bağlıdır. Etiketlenmemiş çok boyutlu diziler olarak belirtilen verileri desteklemeyi asla beklemiyorum.
jakevdp
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.