python - matplot avline 日期错误的位置
问题描述
我需要按日期绘制错误(每周测量一次)并为特定日期添加一些垂直线。我的数据看起来像:
我试过了:
import matplotlib.pyplot as pylt
pylt.xticks(rotation=90)
pylt.plot_date(det.dia_corte_fin_prediccion, det.avg_error_diario_semana, fmt='o',
tz=None, xdate=True, ydate=False)
fechas=list(det['fecha_baja'].unique())
fechas=[x for x in fechas if str(x) != 'nan']
for i in fechas:
pylt.axvline(i, color='black')# esta fecha deberia ser unica
fechas=list(det['fec_ultima_fecha_creacion_sol_baja_anterior'].unique())
fechas.extend( list(det['fec_primera_fecha_creacion_sol_baja_posterior'].unique()))
fechas=[x for x in fechas if str(x) != 'nan']
for i in fechas:
pylt.axvline(i, color='blue',zorder=0)
但我得到一个垂直线位置不正确的图表:
我还将列的类型更改为 datetime ,但仍然遇到同样的问题:
columnas=det.filter(like='fec', axis=1).columns
for i in columnas:
det[i]=pd.to_datetime(det[i])
问题是如果日期不在轴上,它会在最后绘制它。
所以现在我需要在轴中创建所有日期以避免这个问题。我怎样才能做到这一点?
谢谢。
解决方案
我似乎正确的方法是更改要分散的绘图类型:这样它将在正确的位置添加日期,如果需要,在提供的原始日期之间而不是最后。
det.dia_corte_fin_prediccion=pd.to_datetime(det.dia_corte_fin_prediccion)
ax=pylt.scatter(det.dia_corte_fin_prediccion, det.avg_error_diario_semana)
pylt.axvline(pd.to_datetime('2019-08-06'), color='green')
pylt.axvline(pd.to_datetime('2019-08-11'), color='green')
推荐阅读
- python - 使用 matplotlib.pyplot 在 Python 中通过 Axes 对象迭代多个绘图时出错
- python - Python 3 XML 如果未找到另一个元素,则复制并重命名元素
- sql - 在几天的持续时间内,选择表格中记录的每一天的最后一个条目
- python - 有没有办法将谷歌工作室仪表板中的数据抓取到 csv 或 excel 中?
- java - 如何将自定义数据添加到 android 中的 textview?
- python - 无法解码 JSON 对象:预期值:第 1 行第 1 列 (char 0) - 初学者
- python-3.x - 如何解决 Python smtpd 的问题?
- java - 如何从列表中选择重复值
- tfs - 使用 Azure DevOps 共享部署组,Web 应用程序正在被覆盖,如何才能最好地调试呢?
- regex - 数据清洗python