python股票项目分析图

1,``导包连接python

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

#时间转换的函数
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

#filePath = "E:\\桌面\\BABA.csv"

"""
converters={列:函数}  把需要的列放到函数中进行加工
M8:日期格式,D代表整数类型
f8:(flot64)
i1(int8)  i2(int6) i4(int32) i8(int64)
"""
#读取数据
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
#画图
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()


#设置图形的背景
def format_bar(fist_day,end_day): 
  plt.rcParams['font.sans-serif']=['SimHei']
  plt.rcParams["axes.unicode_minus"] = False #解决负号不显示乱码问题
  #x轴坐标标签
  plt.xlabel("从%s到%s的交易日"%(
    fist_day.astype(md.datetime.datetime),
    end_day.astype(md.datetime.datetime)
  ),fontsize=20)

  #y轴的坐标标签
  plt.ylabel("p苹果公司的股票交易金额价格(美元)",fontsize=20)
#标题
plt.title("股票趋势分析图",fontsize=25)
#背景网格
plt.grid(linestyle=":")
#主刻度  set_major_loactor()   代表每周的周日
axes1 = plt.gca()  #获取当前图像的轴信息,返回一个axes对象
axes1.xaxis.set_major_locator(md.WeekdayLocator(byweekday = md.MO))
#次刻度   每天
axes1.xaxis.set_minor_locator(md.DayLocator())

#自定义主刻度日期格式化
axes1.xaxis.set_major_formatter(md.DateFormatter("%Y/%x/%d"))

#日期倾斜
#plt.gcf()
plt.gcf().autofmt_xdate()


#测试
filePath=filePath= "E:\\桌面\\BABA.csv"
data,open_price,higth_price,low_price,close_price=read_csv(filePath)
#图画之前设置背景格式
format_bar(data[0],data[-1])
#画图

draw_bar(data,open_price,higth_price,low_price,close_price)

效果展示:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值