Altair로 이미지 데이터를 그릴 수 있습니까?


답변:


16

Altair에는 URL에서 사용 가능한 이미지를 플롯하려는 경우 사용할 수 있는 이미지 마크 가 있습니다. 예를 들면 다음과 같습니다.

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는 2 차원 데이터 배열을 이미지로 표시하는 데 적합하지 않습니다. 그러나 병합 변환 과 창 변환 의 조합을 사용하는 것이 가능합니다 .

다음은 링크 한 페이지의 데이터를 사용하는 예입니다.

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
)

여기에 이미지 설명을 입력하십시오


@jakevdp 감사합니다. 당신과 당신의 책은 훌륭합니다. altair-viz에서 팬더 데이터 프레임으로 변환하지 않고 numpy 배열에서 직접 데이터를 시각화 할 수있는 새로운 기능을 기대할 수 있습니까? 아니면 matplotlib에 오랫동안 의존해야합니까?
— arjan-hada

Altair의 문법은 구조화 된 테이블 형식 데이터와 매우 밀접한 관련이 있습니다. 레이블이없는 다차원 배열로 지정된 데이터를 지원할 것으로 예상하지 않습니다.
— jakevdp
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.