知道了换手率还不够,必须还要结合当天的成交额来判断当前股票的吸引力,所以我们还可以给柱状图加上当天的成交额为其标签,结合起来看。
给柱状图加标签的代码如下:
ax_hsl = ax.bar(
np.arange(0, len(stock_data.index)-begin),
stock_data.change[begin:],
color=['g' if stock_data.open[x] > stock_data.close[x] else 'r' for x in range(begin, len(stock_data.index))])
ax.bar_label(
ax_hsl, # 要打标签的柱状图
labels=stock_data.dealLabel[begin:], # 标签,为当日的成交额(亿)
label_type='edge', # 标签显示的位置,edge(顶部),center(柱状图中间)
fontsize='28', # 标签字体大小
fmt="%.f") # 标签数据格式
我们首先要获取该柱状图,再把该柱状图作为参数传给bar_label()。
完整的代码如下:
# 仅制作单股票的换手率柱状图
# 2、给柱状图添加标签
import pandas
import numpy as np
import matplotlib.pyplot as plt
dir_name = 'D:\\gupiao\\'
def paint_dayk(code):
# 1、获取数据
stock_data = pandas.read_csv(dir_name + code + '.txt') # 读取数据
begin = len(stock_data) - 120 # 取最近120天的数据
if begin < 0: # 如果上市未满120天,则从上市当天开始显示
begin = 0
# 2、画日K图
fig = plt.figure( # 添加fig对象
figsize=(54, 28), # 设置fig大小,长和宽,单位为英寸
dpi=120) # 每英寸的像素点数
gs = fig.add_gridspec(1, 1) # 在fig中添加一个一行一列的网格
ax = fig.add_subplot(gs[0, 0]) # 在fig中添加网格的第一块,并返回一套坐标轴
ax_hsl = ax.bar(
np.arange(0, len(stock_data.index)-begin),
stock_data.change[begin:],
color=['g' if stock_data.open[x] > stock_data.close[x] else 'r' for x in range(begin, len(stock_data.index))])
ax.bar_label(
ax_hsl, # 要打标签的柱状图
labels=stock_data.dealLabel[begin:], # 标签,为当日的成交额(亿)
label_type='edge', # 标签显示的位置,edge(顶部),center(柱状图中间)
fontsize='28', # 标签字体大小
fmt="%.f") # 标签数据格式
ax.grid(axis='x', linestyle='-.') # 添加x轴方向的网格
ax.grid(axis='y', linestyle='-.') # 添加y轴方向的网格
ax.yaxis.tick_right() # 将y轴的数值显示在右边
ax.set_xlim(0, len(stock_data.index) - begin, 1) # 设置x轴的范围
ax.set_xticks(range(0, len(stock_data.index) - begin, 1)) # 设置x轴的刻度
ax.axes.set_xticklabels(stock_data.week[begin:])
for label in ax.xaxis.get_ticklabels(): # 设置x轴标签的字体大小
label.set_fontsize(16)
for label in ax.yaxis.get_ticklabels(): # 设置y轴标签的字体大小
label.set_fontsize(40)
# 3、输出日K图
plt.savefig(dir_name + code + '.jpg') # 保存图片
def main():
code = '000001'
paint_dayk(code)
if __name__ == '__main__':
main()
生成的图形如下: