在Plotly / Dash中绘制多个月份和几年的值

时间:2018-12-14 10:38:03

标签: python-3.x plotly

我有一个Dash仪表板,我需要在0到12的月份的x轴上作图,并且需要在同一图形上为选定的不同年份(即1991-2040)绘制多条线。绘制的值是在数据框中说“总计”的列。标签应为年份,且总值在y轴上。我的数据如下:

      Month Year  Total
0       0  1991  31.4
1       0  1992  31.4
2       0  1993  31.4
3       0  1994  20
4       0  1995  300
..    ...   ...   ...
33      0  2024  31.4
34      1  2035  567
35      1  2035  10
36      1  2035  3
....

我是否需要对其进行分组以及如何在Dash / Plotly中实现?

1 个答案:

答案 0 :(得分:1)

在我看来,您应该看看pd.pivot_table

%matplotlib inline
import pandas as pd
import numpy as np
import plotly.offline as py
import plotly.graph_objs as go

# create a df
N = 100
df = pd.DataFrame({"Date":pd.date_range(start='1991-01-01',
                                        periods=N,
                                        freq='M'),
                   "Total":np.random.randn(N)}) 

df["Month"] = df["Date"].dt.month
df["Year"] = df["Date"].dt.year
# use pivot_table to have years as columns
pv = pd.pivot_table(df,
                    index=["Month"],
                    columns=["Year"],
                    values=["Total"])
# remove multiindex in columns
pv.columns = [col[1] for col in pv.columns]

data = [go.Scatter(x = pv.index,
                   y = pv[col],
                   name = col)
        for col in pv.columns]

py.iplot(data)