以轴为单位的月份

时间:2017-10-04 01:45:16

标签: python-3.x matplotlib

我想在这个情节中添加月度价格 - 目前显示的是2015年和2016年的价格,我希望它能显示1月,2月,1月,1月。

我所拥有的数据索引始于2015-01-01,并于2015-12-31结束。我到目前为止的代码是:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as mdate

plt.figure(figsize=(20,12))
#ax = plt.add_subplot(111)
plt.plot_date(list(max_group_by15.index), max_group_by15['Data_Value'])
plt.plot_date(list(min_group_by15.index), min_group_by15['Data_Value'])
plt.plot_date(list(min_group_by14.index), min_group_by14['Data_Value'], '-b')
plt.plot_date(list(max_group_by14.index), max_group_by14['Data_Value'], '-r')

plt.legend(['2015 Temp Exceed Prev High', '2015 Temp Below Prev Low', 'Min Temp 2005-2014', 'Max Temp 2005-2014'])
plt.gca().fill_between(min_group_by14.index, min_group_by14['Data_Value'], max_group_by14['Data_Value'], facecolor = 'blue', alpha =.25)



plt.xlabel('Month')
plt.ylabel('Degrees (Celsius)')
plt.title('Daily High and low temp in Ann Arbor area from 2005-2014')

locator = mdate.MonthLocator()
plt.gca().xaxis.set_major_locator(locator)

制作此情节:

2 个答案:

答案 0 :(得分:3)

很难在没有您确切数据的情况下尝试,但我认为您只是错过了对set_major_formatter的调用。

import datetime
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.dates as mdates

# Generate some random date-time data
numdays = 500
base = datetime.datetime.today()
date_list = [base - datetime.timedelta(days=x) for x in range(0, numdays)]
y = np.random.rand(numdays)

# Set the locator
locator = mdates.MonthLocator()  # every month
# Specify the format - %b gives us Jan, Feb...
fmt = mdates.DateFormatter('%b')


plt.plot(date_list,y)
X = plt.gca().xaxis
X.set_major_locator(locator)
# Specify formatter
X.set_major_formatter(fmt)
plt.show()

enter image description here

答案 1 :(得分:2)

如果只是一年,也可以这样做:)

months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec', 'Jan']
plt.xticks(np.linspace(0,365,13), months)