
§ Code
# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
import pandas as pd # 导入pandas库,用来读取csv文件,并进行数据处理
from datetime import datetime # 导入datetime库,用来将时间字符串转换为datetime格式的时间戳
def draw_trend(data, title): # 画出股票的走势图
data['date'] = data['date'].apply(lambda x:datetime.strptime(x,'%Y-%m-%d')) # 将时间字符串转换为datetime格式的时间戳
plt.figure(figsize=(20,10)) # 设置图片大小
plt.title(title) # 设置图片标题
plt.xlabel('Date') # 设置X轴坐标名称
plt.ylabel('Price') # 设置Y轴坐标名称
plt.plot_date(data['date'], data['close'], '-', linewidth=1) # 画出K线图,由于数据量太大,所以linewidth=1使得K线图变得平滑一些
for label in ax1.xaxis.get_ticklabels(): # 根据X轴上的刻度值,对X刻度进行旋转45°显得不那么密集
label.set_rotation(45)
if __name__ == '__main__': # 程序入口函数main():读取csv文件数据、处理数据、画出K线图、显示K线图。最后一步是显得KLineChart()中定义的show()方法。在这之前都是在内存中进行处理。show()方法执行之后才会真正将内存中的处理好的数据呈递到matplotlib中去作图。如此便实例化了一个实体化的matplotlib对象。之后就可以通过plt对该实体化matplotlib对象进行保存或者额外信息加工了。最后要明明plt是一个pyplot子库而不是matpotlib本体。如此便胜任了Python+Matpotlib+pyplo三者之间的协作作用。
df = pd.read_csv('stockData/000001SZ_20140101~20191231_.csv') # 读取CSV文件数据并储存在df中 df = df[::] draw_trend(df, '000001SZ Trend Graph 2014~2019') ax1 = plt ax1.set_xticks([]) ax1 .show() 此代代代代