如何在Plotly单图中绘制同日期范围的逐年时间序列对比图
需求:单张Plotly图表对比多年时间序列数据
我需要将多年的时间序列数据按相同的日-月起止范围绘制在单张Plotly图表中,直接对比2018年、2019年等不同年份的数据。当前代码实现的是分年绘制子图,希望调整为单图展示。
相关信息
- 数据文件:
decremento_municipio_202305291512.csv - 现有子图效果:各年份数据以独立子图形式分开展示
现有代码
from datetime import date, datetime import numpy as np import pandas as pd import plotly.express as px import plotly.graph_objects as go df_decremento_municipio = pd.read_csv('app/data/decremento_municipio_202305291512.csv', index_col="view_date") template_graph = { "layout": { "modebar": { "remove": [ "zoom", "pan", "select", "zoomIn", "zoomOut", "lasso2d", "autoscale", ] }, "separators": ".", "showlegend": True, } } df_decremento_municipio.index = pd.to_datetime(df_decremento_municipio.index) df_decremento_municipio["year"] = df_decremento_municipio.index.year min_date = df_decremento_municipio.index.date.min() max_date = df_decremento_municipio.index.date.max() df=pd.Series(name="area_ha", dtype="float64") for ano in df_decremento_municipio.index.year.unique()[ df_decremento_municipio.index.year.unique() > 2016 ]: # 移除2015和2016年(数据质量极差) df_por_ano = df_decremento_municipio[df_decremento_municipio["year"] == ano] dff_acumulacao = df_por_ano["area_ha"].groupby([df_por_ano.index]).sum().cumsum() df = df.append(dff_acumulacao) fig = go.Figure() # 各年份数据的起始日期 start = ["2020-01-01", "2018-01-04", "2021-01-05" , "2022-01-05", "2019-01-01", "2023-01-10", "2017-12-27"] # 各年份数据的结束日期 end = ["2020-12-31", "2018-12-27", "2021-12-16", "2022-12-31", "2019-12-22", "2023-05-03", "2017-01-26"] years = df.index.year.unique()[df.index.year.unique()>2016].sort_values() for idx, (s,e) in enumerate(zip(start, end)): tmp = df[(df.index >= start[idx]) & (df.index <= end[idx])] fig.add_trace(go.Scatter(x=tmp.index, y=tmp, name=str(years[idx]), mode='lines', )) fig.update_layout(height=600, xaxis_tickformat='%d-%m') fig.update_xaxes(type='date') fig.show()
内容的提问来源于stack exchange,提问作者dogosousa
相关产品推荐
相关产品推荐

