matplotlib画以时间为横坐标的图,用dataframe数据

缘起

当我在使用SQL数据库作为数据来源时,发现所获取的多为时间序列数据,我就非常希望画以时间为横坐标的折线图。并希望自由地设置时间间隔,和画布大小。

import matplotlib.pyplot as plt
import pandas as pd
import pymssql
import warnings
from pylab import *
import matplotlib.dates as mdates

warnings.filterwarnings('ignore')

connect = pymssql.connect('IP地址','用户名','密码','数据库名')
print("连接成功")
data = pd.read_sql("select TRADEDATE,cast(TCLOSE as int) from TQ_QT_SKDAILYPRICE where SECODE='2010000512'", con=connect)
#print(data.head()) #查看读取的结果
data.columns = ['day','close']
#print(data.head()) #查看读取的结果
data['day'] = pd.to_datetime(data['day'])    #轉換為日期,否則下面的日期設置不會生效

#matplotlib.pyplot方式
plt.rcParams['font.family'] = ['sans-serif']
plt.rcParams['font.sans-serif'] = ['SimHei']

fig = plt.figure(figsize=(20, 5))
ax = fig.add_subplot(1, 1, 1)

plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m'))  #設置x軸主刻度顯示格式(日期)
plt.gca().xaxis.set_major_locator(mdates.MonthLocator(interval=15))  #設置x軸主刻度間距

plt.xlabel('日期')
plt.ylabel('收盘价')
plt.title('2010000512收盘价折线图')
plt.plot(data['day'],data['close'])
plt.show()

运行结果:
在这里插入图片描述

调节画布大小

fig = plt.figure(figsize=(20, 5))

20和5分别为画布的长宽。

控制中文字符和正负号正常显示

plt.rcParams['font.family'] = ['sans-serif']
plt.rcParams['font.sans-serif'] = ['SimHei']

设置x轴主刻度显示格式(日期)

import matplotlib.dates as mdates
plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m'))  

'%Y-%m’可以从‘%y-%m-%d %H:%M’之中自由选择。分别显示年、月、日、时、分。

设置x轴主刻度间距

import matplotlib.dates as mdates
plt.gca().xaxis.set_major_locator(mdates.MonthLocator(interval=15))

通过更改interval的赋值大小改变横坐标标注的疏密程度。越大越稀疏。

猜你喜欢

转载自blog.csdn.net/qq_43082153/article/details/108603814