示例页面

python-时间序列x轴日期展示到天

import matplotlib.dates as mdate
import matplotlib.pyplot as plt
import tushare as ts
import pandas as pd
import datetime
%matplotlib inline
plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']
plt.rcParams['axes.unicode_minus'] = False # 解决负数无法正常显示的问题


# 获取2021-01-01至今的股票数据
sun_stock = ts.get_k_data(code='002078', start='2021-01-01', end=datetime.datetime.now().strftime('%Y-%m-%d'))
sun_stock['date']=pd.to_datetime(sun_stock['date'], format='%Y-%m-%d')  # 设置日期格式为datetime
sun_stock.set_index('date',inplace=True) 

一般时间序列绘图的x轴标签值展示到月,but,总会希望展示到天,解决方案如下:
ax1.xaxis.set_major_formatter(mdate.DateFormatter('%Y-%m-%d'))

fig = plt.figure(figsize=(15,4))
ax1 = fig.add_subplot(1,1,1)

# 设置X轴的时间显示格式
ax1.xaxis.set_major_formatter(mdate.DateFormatter('%Y-%m-%d')) # 设置主刻度
# ax1.xaxis.set_minor_locator(mdate.DayLocator() ) # 设置次刻度
plt.xticks(rotation=45)
# plt.xticks(pd.date_range(sun_stock.index[0],sun_stock.index[-1]), rotation=90) # x轴标签竖放
ax1.plot(sun_stock.index, sun_stock['close'], color='b', label='股价')


# 设置为共用X轴的双y轴图表
ax2 = ax1.twinx()
# ax2.xaxis.set_major_formatter(mdate.DateFormatter('%Y-%m-%d'))
ax2.bar(sun_stock.index, sun_stock['volume'], color='g', label='成交额', width=2)

# 设置轴和轴标签
ax1.set_yticks([i * 5 for i in range(5)])
ax1.set_ylabel('股价')
ax2.set_yticks([i * 300000 for i in range(5) ])
ax2.set_ylabel('成交额')
ax1.set_xlabel('日期')

# 设置图形标题
ax1.set_title('股价和成交额')

# 设置图例
ax1.legend(loc=2)
ax2.legend(loc=1)
plt.show()

posted @ 2021-11-20 17:46  没有风格的Wang  阅读(1163)  评论(0编辑  收藏  举报