Как непрерывно отображать кумулятивный счет в гистограмме (без пробелов по оси X) - PullRequest
1 голос
/ 17 октября 2019

Я использую график, чтобы отобразить столбчатую диаграмму с накопленным количеством объектов. Для контекста, ось X - это даты, а ось Y - количество имен. Есть 5 человек, которые делают эти подсчеты в разные дни, и я хочу отобразить счет, который каждый из них делает за каждый день, чтобы гистограмма с накоплением вступила в игру. Сейчас бывают дни, когда никто не считает имена, поэтому нет данных, и в гистограмме есть пробел. В идеале, поскольку это кумулятивный счет, я бы хотел, чтобы счетчик для этих «пустых» дней был таким же столбчатым графиком, как и предыдущий день, чтобы график был непрерывным. Как мне этого добиться? Вот код Python ниже:

    traces = []
    for r in pivot_data.index.tolist():
         trace = go.Bar(
         name = r,
         x=pivot_data.columns.tolist(), # these are all the dates in the dataset
         y=pivot_data.loc[r].fillna(0).values.cumsum().tolist(), # get values for each date
         )
     traces.append(trace)

    data = traces
    layout = go.Layout(title="Cummulative Name count per volunteer for each weekday", xaxis= 
                {'title':'Date'}, yaxis={'title':'Name count'}, xaxis_tickangle=-45,
               barmode='stack'
     )


   fig = go.Figure(data=data, layout=layout)
   iplot(fig)

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

    pivot_data

                      Date  2019-06-01 00:00:00 2019-06-02 00:00:00 
    names                                                                                   
    Mark Jones                3.0                  NaN  
    Dennis Smith             NaN                   1.0

Дайте мне знать, если требуется какая-либо другая информация,

1 Ответ

1 голос
/ 17 октября 2019

Мне бы хотелось, чтобы количество этих «пустых» дней было таким же, как и у предыдущего дня, чтобы график был непрерывным.

Мне кажется, что выможет использовать Мультикатегорию Водопада :

enter image description here

Код:

import plotly.graph_objects as go

fig = go.Figure()

fig.add_trace(go.Waterfall(
    x = [["2016", "2017", "2017", "2017", "2017", "2018", "2018", "2018", "2018"],
        ["initial", "q1", "q2", "q3", "total", "q1", "q2", "q3", "total"]],
    measure = ["absolute", "relative", "relative", "relative", "total", "relative", "relative", "relative", "total"],
    y = [1, 2, 3, 1, None, 1, 2, 4, None],
    base = 0,
    name = 'Mark Jones'
))

fig.add_trace(go.Waterfall(
    x = [["2016", "2017", "2017", "2017", "2017", "2018", "2018", "2018", "2018"],
        ["initial", "q1", "q2", "q3", "total", "q1", "q2", "q3", "total"]],
    measure = ["absolute", "relative", "relative", "relative", "total", "relative", "relative", "relative", "total"],
    y = [2, 2, 3, 1, None, 1, 2, 4, None],
    base = 0,
    name = 'Dennis Smith'
))

fig.update_layout(
    waterfallgroupgap = 0.5,
)

fig.show()
...