Диаграмма Ганта - печать всех понедельников за год - PullRequest
1 голос
/ 02 марта 2020

При наличии такого набора данных:

Task,Start,End
a,2020-03-01,2020-03-16
a,2020-04-01,2020-04-16
b,2020-03-05,2020-06-22
c,2020-06-10,2020-11-28

и этой диаграммы Ганта

import pandas as pd
import altair as alt

df = pd.read_csv("/Gantt.csv")
df["Start"] = pd.to_datetime(df["Start"])
df["End"] = pd.to_datetime(df["End"])

chart = alt.Chart(df).mark_bar().encode(
    x="Start",
    x2="End",

    y=alt.Y("Task", 
            sort=list(df.sort_values(["Start"])
                                    ["Task"])), 
    color=alt.Color("Task",legend=None)
)

chart

есть ли способ отобразить на оси х все понедельники 2020 года?

1 Ответ

4 голосов
/ 02 марта 2020

Вы можете настроить значения тиков, используя alt.Axis

Например:

import pandas as pd
import altair as alt

df = pd.read_csv("Gantt.csv", parse_dates=["Start", "End"])

chart = alt.Chart(df).mark_bar().encode(
    x=alt.X("Start", axis=alt.Axis(
        values=[d.isoformat() for d in pd.date_range('2020-01-06', freq='7D', periods=52)],
        format="%a %b %_d",
        tickCount=52,
        labelAngle=90)),
    x2="End",
    y=alt.Y("Task", 
            sort=list(df.sort_values(["Start"])
                                    ["Task"])), 
    color=alt.Color("Task",legend=None)
).properties(width=800)

chart.display()

enter image description here

Обратите внимание, что форматы времени Альтаира берутся из d3-date-format

...