Python 以偶数间隔绘制无连续天数
我正在使用下面的函数绘制一个图表,显示6年内每年2个月的数字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
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())