Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 以偶数间隔绘制无连续天数_Python_Pandas_Matplotlib - Fatal编程技术网

Python 以偶数间隔绘制无连续天数

Python 以偶数间隔绘制无连续天数,python,pandas,matplotlib,Python,Pandas,Matplotlib,我正在使用下面的函数绘制一个图表,显示6年内每年2个月的数字 def plot_report(property_type, first_period, year_periods, month_periods): reporting_periods = get_reporting_periods(first_period, year_periods, month_periods) data = get_rows(df, property_type, reporting_period

我正在使用下面的函数绘制一个图表,显示6年内每年2个月的数字

def plot_report(property_type, first_period, year_periods, month_periods):
    reporting_periods = get_reporting_periods(first_period, year_periods, month_periods)
    data = get_rows(df, property_type, reporting_periods)
    suburbs = data.groupby(['state', 'suburb'])

    fig, ax = plt.subplots()

    for i, suburb in suburbs:
        suburb.plot(x='yrend', y='median_price', ax=ax, linewidth=2)

    ax.xaxis.set_ticks(reporting_periods)
    ax.xaxis.set_major_formatter(DateFormatter("%b %y"))
    ax.yaxis.set_major_formatter(formatter)

    ax.grid(False)
    ax.legend().set_visible(False)
    fig.autofmt_xdate()

    locs, labels = plt.xticks()
    plt.setp(labels, rotation=90)

    return plt.show()
而报告期可能会再次出现

[datetime.datetime(2004, 12, 1, 0, 0), datetime.datetime(2005, 1, 1, 0, 0), datetime.datetime(2003, 12, 1, 0, 0), datetime.datetime(2004, 1, 1, 0, 0), datetime.datetime(2002, 12, 1, 0, 0), datetime.datetime(2003, 1, 1, 0, 0), datetime.datetime(2001, 12, 1, 0, 0), datetime.datetime(2002, 1, 1, 0, 0), datetime.datetime(2000, 12, 1, 0, 0), datetime.datetime(2001, 1, 1, 0, 0), datetime.datetime(1999, 12, 1, 0, 0), datetime.datetime(2000, 1, 1, 0, 0)]
这是结果图:

如何在x轴上以相同的间隔均匀分布日期

一些样本数据:

suburb state house yrend median_price CHARNWOOD ACT H 31/01/91 0:00 91000 CHARNWOOD ACT H 28/02/91 0:00 90000 CHARNWOOD ACT H 31/03/91 0:00 92000 CHARNWOOD ACT H 30/04/91 0:00 92000 CHARNWOOD ACT H 31/05/91 0:00 92400 CHARNWOOD ACT H 30/06/91 0:00 94000 CHARNWOOD ACT H 31/07/91 0:00 95000 CHARNWOOD ACT H 31/08/91 0:00 95000 CHARNWOOD ACT H 30/09/91 0:00 96000 CHARNWOOD ACT H 31/10/91 0:00 97100 CHARNWOOD ACT H 30/11/91 0:00 98000 CHARNWOOD ACT H 31/12/91 0:00 98000 CHARNWOOD ACT H 31/01/92 0:00 103000 CHARNWOOD ACT H 29/02/92 0:00 105000 CHARNWOOD ACT H 31/03/92 0:00 106000 CHARNWOOD ACT H 30/04/92 0:00 109000 CHARNWOOD ACT H 31/05/92 0:00 110000 CHARNWOOD ACT H 30/06/92 0:00 113975 CHARNWOOD ACT H 31/07/92 0:00 117000 CHARNWOOD ACT H 31/08/92 0:00 118000 CHARNWOOD ACT H 30/09/92 0:00 119725 CHARNWOOD ACT H 31/10/92 0:00 120000 CHARNWOOD ACT H 30/11/92 0:00 123250 CHARNWOOD ACT H 31/12/92 0:00 123250 CHARNWOOD ACT H 31/01/93 0:00 123500 CHARNWOOD ACT H 28/02/93 0:00 123500 CHARNWOOD ACT H 31/03/93 0:00 123500 CHARNWOOD ACT H 30/04/93 0:00 125000 CHARNWOOD ACT H 31/05/93 0:00 123500 CHARNWOOD ACT H 30/06/93 0:00 123000 CHARNWOOD ACT H 31/07/93 0:00 120000 CHARNWOOD ACT H 31/08/93 0:00 120000 CHARNWOOD ACT H 30/09/93 0:00 120000 CHARNWOOD ACT H 31/10/93 0:00 120000 CHARNWOOD ACT H 30/11/93 0:00 118500 CHARNWOOD ACT H 31/12/93 0:00 118500 CHARNWOOD ACT H 31/01/94 0:00 118200 CHARNWOOD ACT H 28/02/94 0:00 119000 CHARNWOOD ACT H 31/03/94 0:00 118500 CHARNWOOD ACT H 30/04/94 0:00 118500 CHARNWOOD ACT H 31/05/94 0:00 118200 CHARNWOOD ACT H 30/06/94 0:00 119500 CHARNWOOD ACT H 31/07/94 0:00 119500 CHARNWOOD ACT H 31/08/94 0:00 119500 CHARNWOOD ACT H 30/09/94 0:00 118850 CHARNWOOD ACT H 31/10/94 0:00 119500 CHARNWOOD ACT H 30/11/94 0:00 116500 CHARNWOOD ACT H 31/12/94 0:00 116000 CHARNWOOD ACT H 31/01/95 0:00 115000 CHARNWOOD ACT H 28/02/95 0:00 112250 CHARNWOOD ACT H 31/03/95 0:00 110000 CHARNWOOD ACT H 30/04/95 0:00 110000 CHARNWOOD ACT H 31/05/95 0:00 109975 CHARNWOOD ACT H 30/06/95 0:00 106000 CHARNWOOD ACT H 31/07/95 0:00 106000 CHARNWOOD ACT H 31/08/95 0:00 106000 CHARNWOOD ACT H 30/09/95 0:00 104000 CHARNWOOD ACT H 31/10/95 0:00 103500 CHARNWOOD ACT H 30/11/95 0:00 101000 CHARNWOOD ACT H 31/12/95 0:00 101750 CHARNWOOD ACT H 31/01/96 0:00 102750 CHARNWOOD ACT H 29/02/96 0:00 103000 CHARNWOOD ACT H 31/03/96 0:00 100500 CHARNWOOD ACT H 30/04/96 0:00 100000 CHARNWOOD ACT H 31/05/96 0:00 99500 CHARNWOOD ACT H 30/06/96 0:00 98750 CHARNWOOD ACT H 31/07/96 0:00 96000 CHARNWOOD ACT H 31/08/96 0:00 97000 CHARNWOOD ACT H 30/09/96 0:00 98750 CHARNWOOD ACT H 31/10/96 0:00 98750 CHARNWOOD ACT H 30/11/96 0:00 100000 CHARNWOOD ACT H 31/12/96 0:00 98000 BELCONNEN ACT H 31/01/91 0:00 381000 BELCONNEN ACT H 28/02/91 0:00 382325 BELCONNEN ACT H 31/03/91 0:00 382000 BELCONNEN ACT H 30/04/91 0:00 385000 BELCONNEN ACT H 31/05/91 0:00 382650 BELCONNEN ACT H 30/06/91 0:00 381325 BELCONNEN ACT H 31/07/91 0:00 389000 BELCONNEN ACT H 31/08/91 0:00 388500 BELCONNEN ACT H 30/09/91 0:00 383825 BELCONNEN ACT H 31/10/91 0:00 381325 BELCONNEN ACT H 30/11/91 0:00 379000 BELCONNEN ACT H 31/12/91 0:00 374500 BELCONNEN ACT H 31/01/92 0:00 371000 BELCONNEN ACT H 29/02/92 0:00 371000 BELCONNEN ACT H 31/03/92 0:00 370700 BELCONNEN ACT H 30/04/92 0:00 370000 BELCONNEN ACT H 31/05/92 0:00 370200 BELCONNEN ACT H 30/06/92 0:00 370000 BELCONNEN ACT H 31/07/92 0:00 365000 BELCONNEN ACT H 31/08/92 0:00 370000 BELCONNEN ACT H 30/09/92 0:00 373750 BELCONNEN ACT H 31/10/92 0:00 375000 BELCONNEN ACT H 30/11/92 0:00 380000 BELCONNEN ACT H 31/12/92 0:00 381000 BELCONNEN ACT H 31/01/93 0:00 388000 BELCONNEN ACT H 28/02/93 0:00 384000 BELCONNEN ACT H 31/03/93 0:00 389000 BELCONNEN ACT H 30/04/93 0:00 395000 BELCONNEN ACT H 31/05/93 0:00 397500 BELCONNEN ACT H 30/06/93 0:00 400000 BELCONNEN ACT H 31/07/93 0:00 400000 BELCONNEN ACT H 31/08/93 0:00 397500 BELCONNEN ACT H 30/09/93 0:00 400800 BELCONNEN ACT H 31/10/93 0:00 405000 BELCONNEN ACT H 30/11/93 0:00 406500 BELCONNEN ACT H 31/12/93 0:00 122500 BELCONNEN ACT H 31/01/94 0:00 122000 BELCONNEN ACT H 28/02/94 0:00 125000 BELCONNEN ACT H 31/03/94 0:00 125000 BELCONNEN ACT H 30/04/94 0:00 125000 BELCONNEN ACT H 31/05/94 0:00 126750 BELCONNEN ACT H 30/06/94 0:00 129975 BELCONNEN ACT H 31/07/94 0:00 133725 BELCONNEN ACT H 31/08/94 0:00 137000 BELCONNEN ACT H 30/09/94 0:00 140000 BELCONNEN ACT H 31/10/94 0:00 142750 BELCONNEN ACT H 30/11/94 0:00 142750 BELCONNEN ACT H 31/12/94 0:00 149000 BELCONNEN ACT H 31/01/95 0:00 157000 BELCONNEN ACT H 28/02/95 0:00 160000 BELCONNEN ACT H 31/03/95 0:00 161875 BELCONNEN ACT H 30/04/95 0:00 165000 BELCONNEN ACT H 31/05/95 0:00 165000 BELCONNEN ACT H 30/06/95 0:00 171500 BELCONNEN ACT H 31/07/95 0:00 179000 BELCONNEN ACT H 31/08/95 0:00 185000 BELCONNEN ACT H 30/09/95 0:00 189950 BELCONNEN ACT H 31/10/95 0:00 195000 BELCONNEN ACT H 30/11/95 0:00 195500 BELCONNEN ACT H 31/12/95 0:00 198000 BELCONNEN ACT H 31/01/96 0:00 206000 BELCONNEN ACT H 29/02/96 0:00 210000 BELCONNEN ACT H 31/03/96 0:00 211500 BELCONNEN ACT H 30/04/96 0:00 219000 BELCONNEN ACT H 31/05/96 0:00 225000 BELCONNEN ACT H 30/06/96 0:00 234000 BELCONNEN ACT H 31/07/96 0:00 245000 BELCONNEN ACT H 31/08/96 0:00 245500 BELCONNEN ACT H 30/09/96 0:00 247000 BELCONNEN ACT H 31/10/96 0:00 248000 BELCONNEN ACT H 30/11/96 0:00 249500 BELCONNEN ACT H 31/12/96 0:00 248000 BRUCE ACT H 31/01/91 0:00 405900 BRUCE ACT H 28/02/91 0:00 405900 BRUCE ACT H 31/03/91 0:00 405900 BRUCE ACT H 30/04/91 0:00 405900 BRUCE ACT H 31/05/91 0:00 405900 BRUCE ACT H 30/06/91 0:00 405900 BRUCE ACT H 31/07/91 0:00 405900 BRUCE ACT H 31/08/91 0:00 405900 BRUCE ACT H 30/09/91 0:00 405900 BRUCE ACT H 31/10/91 0:00 405900 BRUCE ACT H 30/11/91 0:00 405900 BRUCE ACT H 31/12/91 0:00 405900 BRUCE ACT H 31/01/92 0:00 405900 BRUCE ACT H 29/02/92 0:00 405900 BRUCE ACT H 31/03/92 0:00 405900 BRUCE ACT H 30/04/92 0:00 405900 BRUCE ACT H 31/05/92 0:00 405900 BRUCE ACT H 30/06/92 0:00 405900 BRUCE ACT H 31/07/92 0:00 405900 BRUCE ACT H 31/08/92 0:00 405900 BRUCE ACT H 30/09/92 0:00 405900 BRUCE ACT H 31/10/92 0:00 405900 BRUCE ACT H 30/11/92 0:00 405900 BRUCE ACT H 31/12/92 0:00 405900 BRUCE ACT H 31/01/93 0:00 405900 BRUCE ACT H 28/02/93 0:00 405900 BRUCE ACT H 31/03/93 0:00 405900 BRUCE ACT H 30/04/93 0:00 405900 BRUCE ACT H 31/05/93 0:00 405900 BRUCE ACT H 30/06/93 0:00 405900 BRUCE ACT H 31/07/93 0:00 405900 BRUCE ACT H 31/08/93 0:00 405900 BRUCE ACT H 30/09/93 0:00 405900 BRUCE ACT H 31/10/93 0:00 405900 BRUCE ACT H 30/11/93 0:00 405900 BRUCE ACT H 31/12/93 0:00 405900 BRUCE ACT H 31/01/94 0:00 405900 BRUCE ACT H 28/02/94 0:00 405900 BRUCE ACT H 31/03/94 0:00 405900 BRUCE ACT H 30/04/94 0:00 339000 BRUCE ACT H 31/05/94 0:00 360000 BRUCE ACT H 30/06/94 0:00 377500 BRUCE ACT H 31/07/94 0:00 377500 BRUCE ACT H 31/08/94 0:00 377500 BRUCE ACT H 30/09/94 0:00 377500 BRUCE ACT H 31/10/94 0:00 360000 BRUCE ACT H 30/11/94 0:00 351000 BRUCE ACT H 31/12/94 0:00 351000 BRUCE ACT H 31/01/95 0:00 351000 BRUCE ACT H 28/02/95 0:00 351000 BRUCE ACT H 31/03/95 0:00 351000 BRUCE ACT H 30/04/95 0:00 351000 BRUCE ACT H 31/05/95 0:00 351000 BRUCE ACT H 30/06/95 0:00 351000 BRUCE ACT H 31/07/95 0:00 351000 BRUCE ACT H 31/08/95 0:00 351000 BRUCE ACT H 30/09/95 0:00 351000 BRUCE ACT H 31/10/95 0:00 351000 BRUCE ACT H 30/11/95 0:00 351000 BRUCE ACT H 31/12/95 0:00 351000 BRUCE ACT H 31/01/96 0:00 351000 BRUCE ACT H 29/02/96 0:00 351000 BRUCE ACT H 31/03/96 0:00 351000 BRUCE ACT H 30/04/96 0:00 351000 BRUCE ACT H 31/05/96 0:00 351000 BRUCE ACT H 30/06/96 0:00 351000 BRUCE ACT H 31/07/96 0:00 351000 BRUCE ACT H 31/08/96 0:00 302750 BRUCE ACT H 30/09/96 0:00 307750 BRUCE ACT H 31/10/96 0:00 312000 BRUCE ACT H 30/11/96 0:00 312000 郊区州立住宅yrend中位价格 查恩伍德法案H 31/01/91 0:00 91000 查恩伍德法案H 28/02/91 0:00 90000 查恩伍德法案H 31/03/91 0:00 92000 查恩伍德法案H 30/04/91 0:00 92000 查恩伍德法案H 31/05/91 0:00 92400 查恩伍德法案H 30/06/91 0:00 94000 查恩伍德法案H 31/07/91 0:00 95000 查恩伍德法案H 31/08/91 0:00 95000 查恩伍德法案H 30/09/91 0:00 96000 查恩伍德法案H 31/10/91 0:00 97100 查恩伍德法案H 30/11/91 0:00 98000 查恩伍德法案H 31/12/91 0:00 98000 查恩伍德法案H 31/01/92 0:00 103000 查恩伍德法案H 29/02/92 0:00 105000 查恩伍德法案H 31/03/92 0:00 106000 查恩伍德法案H 30/04/92 0:00 109000 查恩伍德法案H 31/05/92 0:00 110000 查恩伍德法案H 30/06/92 0:00 113975 查恩伍德法案H 31/07/92 0:00 117000 查恩伍德法案H 31/08/92 0:00 118000 查恩伍德法案H 30/09/92 0:00 119725 查恩伍德法案H 31/10/92 0:00 120000 查恩伍德法案H 30/11/92 0:00 123250 查恩伍德法案H 31/12/92 0:00 123250 查恩伍德法案H 31/01/93 0:00 123500 查恩伍德法案H 28/02/93 0:00 123500 查恩伍德法案H 31/03/93 0:00 123500 查恩伍德法案H 30/04/93 0:00 125000 查恩伍德法案H 31/05/93 0:00 123500 查恩伍德法案H 30/06/93 0:00 123000 查恩伍德法案H 31/07/93 0:00 120000 查恩伍德法案H 31/08/93 0:00 120000 查恩伍德法案H 30/09/93 0:00 120000 查恩伍德法案H 31/10/93 0:00 120000 查恩伍德法案H 30/11/93 0:00 118500 查恩伍德法案H 31/12/93 0:00 118500 查恩伍德法案H 31/01/94 0:00 118200 查恩伍德法案H 28/02/94 0:00 119000 查恩伍德法案H 31/03/94 0:00 118500 查恩伍德法案H 30/04/94 0:00 118500 查恩伍德法案H 31/05/94 0:00 118200 查恩伍德法案H 30/06/94 0:00 119500 查恩伍德法案H 31/07/94 0:00 119500 查恩伍德法案H 31/08/94 0:00 119500 查恩伍德法案H 30/09/94 0:00 118850 查恩伍德法案H 31/10/94 0:00 119500 查恩伍德法案H 30/11/94 0:00 116500 查恩伍德法案H 31/12/94 0:00 116000 查恩伍德法案H 31/01/95 0:00 115000 查恩伍德法案H 28/02/95 0:00 112250 查恩伍德法案H 31/03/95 0:00 110000 查恩伍德法案H 30/04/95 0:00 110000 查恩伍德法案H 31/05/95 0:00 109975 查恩伍德法案H 30/06/95 0:00 106000 查恩伍德法案H 31/07/95 0:00 106000 查恩伍德法案H 31/08/95 0:00 106000 查恩伍德法案H 30/09/95 0:00 104000 查恩伍德法案H 31/10/95 0:00 103500 查恩伍德法案H 30/11/95 0:00 101000 查恩伍德法案H 31/12/95 0:00 101750 查恩伍德法案H 31/01/96 0:00 102750 查恩伍德法案H 29/02/96 0:00 103000 查恩伍德法案H 31/03/96 0:00 100500 查恩伍德法案H 30/04/96 0:00 100000 查恩伍德法案H 31/05/96 0:00 99500 查恩伍德法案H 30/06/96 0:00 98750 查恩伍德法案H 31/07/96 0:00 96000 查恩伍德法案H 31/08/96 0:00 97000 查恩伍德法案H 30/09/96 0:00 98750 查恩伍德法案H 31/10/96 0:00 98750 查恩伍德法案H 30/11/96 0:00 100000 查恩伍德法案H 31/12/96 0:00 98000 贝尔康宁法案H 31/01/91 0:00 381000 贝尔康宁法案H 28/02/91 0:00 382325 贝尔康宁法案H 31/03/91 0:00 382000 贝尔康宁法案H 30/04/91 0:00 385000 贝尔康宁法案H 31/05/91 0:00 382650 贝尔康宁法案H 30/06/91 0:00 381325 贝尔康宁法案H 31/07/91 0:00 389000 贝尔康宁法案H 31/08/91 0:00 388500 贝尔康宁法案H 30/09/91 0:00 383825 贝尔康宁法案H 31/10/91 0:00 381325 贝尔康宁法案H 30/11/91 0:00 379000 贝尔康宁法案H 31/12/91 0:00 374500 贝尔康宁法案H 31/01/92 0:00 371000 贝尔康宁法案H 29/02/92 0:00 371000 贝尔康宁法案H 31/03/92 0:00 370700 贝尔康宁法案H 30/04/92 0:00 370000 贝尔康宁法案H 31/05/92 0:00 370200 贝尔康宁法案H 30/06/92 0:00 370000 贝尔康宁法案H 31/07/92 0:00 365000 贝尔康宁法案H 31/08/92 0:00 370000 贝尔康宁法案H 30/09/92 0:00 373750 贝尔康宁法案H 31/10/92 0:00 375000 贝尔康宁法案H 30/11/92 0:00 380000 贝尔康宁法案H 31/12/92 0:00 381000 贝尔康宁法案H 31/01/93 0:00 388000 贝尔康宁法案H 28/02/93 0:00 384000 贝尔康宁法案H 31/03/93 0:00 389000 贝尔康宁法案H 30/04/93 0:00 395000 贝尔康宁法案H 31/05/93 0:00 397500 贝尔康宁法案H 30/06/93 0:00 400000 贝尔康宁法案H 31/07/93 0:00 400000 贝尔康宁法案H 31/08/93 0:00 397500 贝尔康宁法案H 30/09/93 0:00 400800 贝尔康宁法案H 31/10/93 0:00 405000 贝尔康宁法案H 30/11/93 0:00 406500 贝尔康宁法案H 31/12/93 0:00 122500 贝尔康宁法案H 31/01/94 0:00 122000 贝尔康宁法案H 28/02/94 0:00 125000 贝尔康宁法案H 31/03/94 0:00 125000 贝尔康宁法案H 30/04/94 0:00 125000 贝尔康宁法案H 31/05/94 0:00 126750 贝尔康宁法案H 30/06/94 0:00 129975 贝尔康宁法案H 31/07/94 0:00 133725 贝尔康宁法案H 31/08/94 0:00 137000 贝尔康宁法案H 30/09/94 0:00 140000 贝尔康宁法案H 31/10/94 0:00 142750 贝尔康宁法案H 30/11/94 0:00 142750 贝尔康宁法案H 31/12/94 0:00 149000 贝尔康宁法案H 31/01/95 0:00 157000 贝尔康宁法案H 28/02/95 0:00 160000 贝尔康宁法案H 31/03/95 0:00 161875 贝尔康宁法案H 30/04/95 0:00 165000 贝尔康宁法案H 31/05/95 0:00 165000 贝尔康宁法案H 30/06/95 0:00 171500 贝尔康宁法案H 31/07/95 0:00 179000 贝尔康宁法案H 31/08/95 0:00 185000 贝尔康宁法案H 30/09/95 0:00 189950 贝尔康宁法案H 31/10/95 0:00 195000 贝尔康宁法案H 30/11/95 0:00 195500 贝尔康
import pandas as pd
from StringIO import StringIO

table = """suburb  state   house   yrend   median_price
CHARNWOOD   ACT H   31/01/91 0:00   91000
CHARNWOOD   ACT H   28/02/91 0:00   90000
...
BRUCE   ACT H   30/11/96 0:00   312000
"""

table = table.replace("0:00", "")
sio = StringIO(table)
df = pd.read_table(sio, sep=r"\s+", parse_dates=['yrend'])
df = df.pivot(index="yrend", columns="suburb", values="median_price")
df.plot()
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt 
import matplotlib.dates as dates
from matplotlib.ticker import FuncFormatter, NullFormatter
import pylab

from StringIO import StringIO

table = table.replace("0:00", "")
sio = StringIO(table)
df = pd.read_table(sio, sep=r"\s+", parse_dates=['yrend'])
df = df.pivot_table(index=["yrend"], columns=["state","suburb"], values=["median_price"])

fig, ax = plt.subplots()

# plot the lines
for col in df.columns:
    ax.plot(df.index, df[col])

# tune the tickers 
locator  = dates.MonthLocator(range(1, 13), bymonthday=1, interval=6)
ax.xaxis.set_minor_locator(locator)
def _monthFmt(x, pos):
    dt = pylab.num2date(x)
    return dt.strftime('%Y') if dt.month == 2 else dt.strftime("%b")
formatter = FuncFormatter(_monthFmt)
ax.xaxis.set_minor_formatter(formatter)
# quiet major formatter - default the years
ax.xaxis.set_major_formatter(NullFormatter())
ax.xaxis.grid(True, which="minor")

ax.yaxis.grid()

plt.show()
ax.xaxis.set_major_locator(YearLocator())