Многострочный сюжет в Альтаире - форматирование данных? - PullRequest
1 голос
/ 08 мая 2019

Как мне создать многострочный сюжет в Альтаире?

В частности, у меня есть датафрейм для панд, который выглядит так:

          Commit    Author  Date        Week    Adds   Deletes  Changes Files     
   0    cf6dc511bbf Dev 1   2019-03-18  12      0      0        0       0     
   1    6a96d05922f Dev 1   2019-03-18  12      504    0        504     5     
   2    0fbc7192380 Dev 1   2019-03-19  12      125    105      230     4    
   3    64a9c4a1fa0 Dev 1   2019-03-19  12      8      0        8       1      

И хотел бы отобразить дату против добавления, удаления и изменения на одном и том же наборе осей. Как это сделать? Нужно ли как-то менять свои данные?

Образец на веб-сайте Altair содержит только цвет, и он выглядит автоматически.

1 Ответ

1 голос
/ 08 мая 2019

Да, вам необходимо изменить форму данных, либо в качестве шага предварительной обработки в пандах, либо с помощью Fold Transform , доступной в Altair 3.0.Информация о работе с этим типом широкоформатных данных содержится в документации: Альтаир: длинные данные против широкоформатных данных .

Вот примериспользования подхода на основе преобразования с данными, подобными вашим:

import pandas as pd
import numpy as np
import altair as alt

df = pd.DataFrame({
    'Date': pd.date_range('2019-01-01', freq='D', periods=20),
    'Adds': np.random.randint(0, 100, 20),
    'Deletes': np.random.randint(0, 100, 20),
    'Changes': np.random.randint(0, 100, 20),
})

alt.Chart(df).transform_fold(
    ['Adds', 'Deletes', 'Changes']
).mark_bar().encode(
    x='yearmonthdate(Date):O',
    y='value:Q',
    color='key:N'
)

chart

...