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.