Производить «уклоненные» или «соседние» гистограммы / столбчатые диаграммы в Альтаире? - PullRequest
1 голос
/ 30 октября 2019

Извиняюсь, если об этом уже спрашивали, но я ищу способ создания гистограмм, которые «уклоняются» ( language от ggplot2), используя библиотеку Altair в python.

Я знаю, у Альтаира есть этот пример :

import altair as alt
from vega_datasets import data

source = data.barley()

alt.Chart(source).mark_bar().encode(
    x='year:O',
    y='sum(yield):Q',
    color='year:N',
    column='site:N'
)

, который производит этот график:

Altair Plot

Однако,здесь много лишних ярлыков и информации. В идеале мне нужен график, на котором парные столбцы кодируют год в цвете (синий - 1931, оранжевый - 1932), а затем города, проходящие вдоль оси x (порядковая переменная).

Трудно объяснить, но вот пример того, как получить подобный сюжет от морского происхождения (используя разные данные; источник: этот SO вопрос ):

Seaborn Plot

Ответы [ 2 ]

2 голосов
/ 30 октября 2019

Да, вы нашли рекомендуемый способ создания сгруппированных гистограмм в Altair. Если вы хотите настроить окончательный вид диаграммы, вы можете сделать такие вещи, как удаление и изменение меток и заголовков;вот как вы можете изменить свой пример, чтобы приблизить его к диаграмме морского происхождения:

import altair as alt
from vega_datasets import data

source = data.barley()

alt.Chart(source).mark_bar().encode(
    x=alt.X('year:O', axis=alt.Axis(title=None, labels=False, ticks=False)),
    y=alt.Y('sum(yield):Q', axis=alt.Axis(grid=False)),
    color='year:N',
    column=alt.Column('site:N', header=alt.Header(title=None, labelOrient='bottom'))
).configure_view(
    stroke='transparent'
)

enter image description here

0 голосов
/ 07 ноября 2019

На случай, если кто-нибудь попадет сюда через Google и т. Д., Вот код для сближения баров:

import altair as alt
from vega_datasets import data

source = data.barley()

alt.Chart(source).mark_bar().encode(
    alt.X('year:O', axis=None),#axis=alt.Axis(title=None, labels=False, ticks=False)),
    alt.Y('sum(yield):Q', axis=alt.Axis(grid=True)),
    alt.Facet('site:N',title="Facet title Here",),
    color='year:N',
).properties(height=150, width=80).configure_view(
    stroke='transparent'
).configure_scale(bandPaddingInner=0,
                  bandPaddingOuter=0.1,
).configure_header(labelOrient='bottom',
                   labelPadding = 3).configure_facet(spacing=5
)

Результат:

Grouped Bar chart

Спасибо Джейку за то, что он указал мне правильное направление своим ответом!

...