Укажите заголовок графика и заголовок фасета в Altair LayerChart - PullRequest
1 голос
/ 29 октября 2019

Используя набор данных радужной оболочки, мы можем создать простой граненый график:

import altair as alt
from vega_datasets import data
iris = data.iris.url

alt.Chart(iris, title='Main Title').mark_bar().encode(
    x='petalWidth:Q',
    y='count(petalLength):Q',
    color='species:N',
    facet=alt.Facet('species:N', title=None)
)

enter image description here

Здесь я могу контролировать как основной заголовок графика, так иназвание фасетов соответственно.

Теперь предположим, что я хочу создать одну и ту же диаграмму, но добавить текстовые аннотации к каждому столбцу:

base = alt.Chart(iris).encode(
    x='petalWidth:Q',
    y='count(petalLength):Q',
    color='species:N',
    text='count(petalLength):Q'
)

c = base.mark_bar()
t = base.mark_text(dy=-6)

alt.layer(c, t).facet('species:N', title=None).properties(title='Main Title')

enter image description here

На этот раз над гранями стоит заголовок species. Как в этом случае я могу контролировать как основной сюжетный заголовок, так и заголовок фасета?

1 Ответ

3 голосов
/ 29 октября 2019

Это ошибка в том, как метод facet() обрабатывает аргументы своего ключевого слова: altair-viz / altair # 1758

В качестве обходного пути до устранения этой проблемы вы можете сделатьэто:

chart = alt.layer(c, t).facet('species:N').properties(title='Main Title')
chart.facet.title = None
chart

enter image description here

...