Как распаковать сгруппированные гистограммы в Altair-Python? - PullRequest
0 голосов
/ 16 марта 2019

All

Мой набор данных выглядит следующим образом. Я пытаюсь использовать библиотеку Altair для построения моей визуализации таким образом, чтобы день недели был на оси X, звукосниматели на оси Y, есть два графика, один график со снегом = Y и другой сюжет со снегом = N, а цвет основан на моем районе. Мне удалось построить два сюжета. Тем не менее, все бары сложены друг на друга. Я хотел бы распаковать участки. Ниже мой ALtair код.

набор данных

{'borough': {0: 'Bronx', 1: 'Brooklyn', 3: 'Manhattan', 4: 'Queens', 5: 'Staten Island',29094: 'Bronx', 29095: 'Brooklyn', 29097: 'Manhattan', 29098: 'Queens', 29099: 'Staten Island'}, 'pickups': {0: 152, 1: 1519, 3: 5258, 4: 405, 5: 6,29094: 67, 29095: 990, 29097: 3828, 29098: 580, 29099: 0}, 'snow': {0: 'N', 1: 'N', 3: 'N', 4: 'N', 5: 'N',29094: 'N', 29095: 'N', 29097: 'N', 29098: 'N', 29099: 'N'}, 'day_of_week': {0: 'Wednesday', 1: 'Wednesday', 3: 'Wednesday', 4: 'Wednesday', 5: 'Wednesday',29094: 'Monday', 29095: 'Monday', 29097: 'Monday', 29098: 'Monday', 29099: 'Monday'}}

Код Альтаира:

alt.Chart(df).mark_bar().encode(
    x='day_of_week:O',
    y='pickups:Q',
    color='borough:N',
    column='snow:N'
)

1 Ответ

1 голос
/ 16 марта 2019

Вы можете создавать непакетированные столбцы, используя кодировку столбцов в сочетании с кодировкой x, следуя примеру Сгруппированная столбчатая диаграмма Altair .Для ваших данных это может выглядеть примерно так:

import pandas as pd
import altair as alt

data = {'borough': {0: 'Bronx', 1: 'Brooklyn', 3: 'Manhattan', 4: 'Queens', 5: 'Staten Island',29094: 'Bronx', 29095: 'Brooklyn', 29097: 'Manhattan', 29098: 'Queens', 29099: 'Staten Island'}, 'pickups': {0: 152, 1: 1519, 3: 5258, 4: 405, 5: 6,29094: 67, 29095: 990, 29097: 3828, 29098: 580, 29099: 0}, 'snow': {0: 'N', 1: 'N', 3: 'N', 4: 'N', 5: 'N',29094: 'N', 29095: 'N', 29097: 'N', 29098: 'N', 29099: 'N'}, 'day_of_week': {0: 'Wednesday', 1: 'Wednesday', 3: 'Wednesday', 4: 'Wednesday', 5: 'Wednesday',29094: 'Monday', 29095: 'Monday', 29097: 'Monday', 29098: 'Monday', 29099: 'Monday'}}
df = pd.DataFrame(data)

alt.Chart(df).mark_bar().encode(
    x=alt.X('borough:N', axis=None),
    y='pickups:Q',
    color='borough:N',
    column='day_of_week:N'
).properties(width=80)

enter image description here

...