1,进行导包:先导入需要用到的包:
from sys import dont_write_bytecode
import numpy as np
import datetime as dt
import matplotlib.dates as md #日期包
import matplotlib.pyplot as plt
from numpy.core.numeric import full
2,插入数据:把股票项目数据以文档形式放入桌面:
?3,转换数据格式
#时间转换的函数
def conver_data(datas):
#把时间转换成字符串类型
s_data = str(datas,encoding="utf-8")
#取出前后多余的空格,回车符 去空
da = dt.datetime.strptime(s_data,"%Y/%m/%d")
#修改日期的格式 "%Y%m%d"-----"%Y-%m-%d
format_data = da.strftime("%Y-%m-%d")
return format_data
4,读取数据
#读取数据
def read_csv(filaPash):
data,open_price,higth_price,low_price,close_price= np.loadtxt(filePath,\
delimiter=",",usecols=(0,1,3,4,5),\
dtype="M8[D],f8,f8,f8,f8",unpack=True,converters={0:conver_data})
return data,open_price,higth_price,low_price,close_price
5,
#画图
def draw_bar(data,open_price,higth_price,low_price,close_price):
#x轴的数据,日期
#data.astype() 任意数据类型修改成任意数据类型
#把datatime的日期格式化改为matplotlib,dates的日期格式
data_md = data.astype(md.datetime.datetime)
#y轴的数据,open_price,higth_price,low_price,close_price
y1 = higth_price - low_price #绘制那条线的y轴的数据
y2 = close_price-open_price #绘制条形图的y轴数据
#大于0就是上涨,红色
up = close_price - open_price > 1e-2
down = open_price-close_price >1e-2
#创建一个全部是0的一维数组da
#data_md.size获取数据的个数
full_color=np.zeros(data_md.size,dtype="3f4")#内部颜色
edge_color = np.zeros(data_md.size,dtype="3f4")#边框颜色
#布尔索引
full_color[up] =(1,0,0) #红色
edge_color[up] = (1,0,0)
full_color[down] = (0,0.5,0)
edge_color[down] = (0,0.5,0) #绿色
#条形图,宽度0,就是一根线
plt.bar(x=data_md,height=y1,width=0,align="center",color=full_color,\
edgecolor = edge_color,bottom=low_price)
plt.bar(x=data_md,height=y2,width=0.8,align="center",color=full_color,\
edgecolor = edge_color,bottom=open_price)
plt.show()
6,最后测试
#测试
filePath=filePath= "E:\\桌面\\BABA.csv"
data,open_price,higth_price,low_price,close_price=read_csv(filePath)
draw_bar(data,open_price,higth_price,low_price,close_price)
7,测试需要读取桌面文档中的数据,点击文档属性找到位置复制到测试第一行代码中,切记最后的双划线
?
8,最后结果展示
?
|