前几天,美股熔断。据悉,此次熔断是美股30年来第二次熔断机制,一时间成为头条新闻。我对股票一无所知,在这种情况下我也学到了很多东西。股市的变化瞬息万变。有一个图表可以清楚地反映一段时间内股市的变化。这是烛台图。今天我们使用Python绘制K线图,基于两种不同的方法。都是Python可视化的好帮手——Matplotlib、Pyecharts。K线图起源于日本德川幕府时代。它被日本米市的商人用来记录米市的行情和价格波动。因其精致独特的标记方式,后来被引入股票市场和期货市场。目前,这种图形分析方法在我国乃至整个东南亚地区尤为流行。因为用这种方法画出的图表形状很像一根蜡烛,而且这些蜡烛又分为黑白两色,所以又被称为阴阳线图。K线图是由时段内的开盘价、最高价、最低价和收盘价绘制而成。先选取当天的最高价和最低价,将它们竖直连接起来,然后将第二天的开盘价和收盘价连接起来,形成一个长方体。如果当日开盘价高于收盘价,则以绿色(下跌)表示,否则以红色(上涨)表示。这就是K线图的绘制原理,Matplotlib和Pyecharts已经为我们写好了绘制K线图的方法,我们只需要调用这些方法即可。为了生成数据,我根据这些数据之间简单的逻辑关系,随机生成了一个月的股市数据,方便作图。数据顺序具体为日期、开盘价、最高价、最低价、收盘价。start="2020-1-1"data=[]foriinrange(31):random_data=[random.randint(2000,2500)for_inrange(4)]sorted_data=sorted(random_data)day=date2num(datetime.datetime.strptime(start,'%Y-%m-%d'))print(day)如果i==0:one=(day,sorted_data[1],sorted_data[3],sorted_data[0],sorted_data[2])ifrandom.random()>0.5else(day,sorted_data[2],sorted_data[3],sorted_data[0],sorted_data[1])else:one=(day+i,sorted_data[1],sorted_data[3],sorted_data[0],sorted_data[2])ifrandom.random()>0.5else(day+i,sorted_data[2],sorted_data[3],sorted_data[0],sorted_data[1])data.append(one)Matplotlib绘图frommatplotlibimportpyplotaspltfrommpl_financeimportcandlestick_ohlcfig,ax=plt.subplots(facecolor="white",figsize=(12,8))fig.subplots_adjust(bottom=0.1)ax.xaxis_date()plt.xticks(rotation=30)plt.title('K线')plt.xlabel('时间')plt.ylabel('价格')candlestick_ohlc(ax,data,width=0.5,colorup='r',colordown='绿色')plt.grid(True)Pyecharts绘制c=(Kline().add_xaxis(["2017/7/{}".format(i+1)foriinrange(31)]).add_yaxis("kline",data,itemstyle_opts=opts.ItemStyleOpts(color="#ec0000",color0="#00da3c",border_color="#8A0000",border_color0="#008F28",)).set_global_opts(xaxis_opts=opts.AxisOpts(is_scale=True),yaxis_opts=opts.AxisOpts(is_scale=True,splitarea_opts=opts.SplitAreaOpts(is_show=True,aastyle_opts=opts.AreaStyleOpts(opacity=1)),),title_opts=opts.TitleOpts(title="K线"),))c.render("k-line.html")另外我们还可以设置伸缩坐标轴,方便放大缩小观察k线图
