缘起
当我在使用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的赋值大小改变横坐标标注的疏密程度。越大越稀疏。