前面的文章已经解决了数据问题,接下来的重点就是对数据进行分析。
对于短期行情最直观的情绪数据,就是看每天涨停票数量的变化。
今天因为是边学边做,所以先画个简单的,只显示涨停票数变化的趋势图。
实现步骤如下:
一、得到dapan_xxxx_xx.csv中第1列(日期)和第4列(涨停数)的数据。
def get_weight_data(filename):
time = []
weight = []
fileContent = open(filename, "r")
for eachline in fileContent:
eachData = eachline.strip('\n').split(",")
# 过滤第一行标题
if(eachData[0].find("-")<0):
continue
# 判断是否空行
if eachData[-1].strip() == '':
continue
else:
time.append(eachData[0])
weight.append(int(eachData[3]))
return [time, weight]
二、使用matplotlib显示数据。
# ————根据x列表和y列表画趋势图————
def draw_trend_chart(x, y):
plt.rcParams['figure.figsize'] = (10.0, 4.0)
plt.rcParams['font.sans-serif'] = ['SimHei'] # 指定默认字体
plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
pointList = plt.plot(x, y,linestyle='-', marker='o')
for a,b in zip(x, y):
plt.text(a,b+5,b,ha='center', va='bottom', fontsize=10)
plt.xlabel("日期") #x轴标签
plt.ylabel("数量") # y轴标签
plt.title("A股涨停趋势图") # 标题
fig = plt.figure()
plt.show() # 显示
三、当数据量大时,对行和列进行显示优化处理。
# ————根据x列表和y列表画趋势图————
def draw_trend_chart(x, y):
plt.rcParams['figure.figsize'] = (10.0, 4.0)
plt.rcParams['font.sans-serif'] = ['SimHei'] # 指定默认字体
plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
pointList = plt.plot(x, y,linestyle='-', marker='o')
for a,b in zip(x, y):
plt.text(a,b+5,b,ha='center', va='bottom', fontsize=10)
plt.xlabel("日期") #x轴标签
plt.ylabel("数量") # y轴标签
plt.title("A股涨停趋势图") # 标题
# 当横坐标数据大于10个时,从列表中每隔5个取值当做横坐标
xt = x[::5] if(len(x)>10) else x
# 防止数据溢出图片,根据最大数量进行分割,纵坐标显示12格
yt = [t for t in range(0, int(max(y)/100+1)*120, int(max(y)/100+1)*10)]
plt.xticks(xt)
plt.yticks(yt)
fig = plt.figure()
plt.show() # 显示
使用matplotlib画涨停趋势图结束。