python绘制分类箱线图

首页 > 财经 > 正文 2021-06-08

发表自话题:k线图种类

不管是对量化分析师还是普通的投资者来说,K线图(蜡烛图)都是一种很经典、很重要的工具。在K线图中,它会绘制每天的最高价、最低价、开盘价和收盘价,这对于我们理解股票的趋势以及每天的多空对比很有帮助。

一般来说,我们会从各大券商平台获取K线图,但是这种情况下获得的K线图往往不能灵活调整,也不能适应复杂多变的生产需求。因此我们有必要学习一下如何使用Python绘制K线图。

导入必要库

需要说明的是,这里mpl_finance是原来的matplotlib.finance,但是现在独立出来了(而且好像没什么人维护更新了),我们将会使用它提供的方法来绘制K线图;tushare是用来在线获取股票数据的库;matplotlib.ticker中有个FuncFormatter()方法可以帮助我们调整坐标轴;matplotlib.pylab.date2num可以帮助我们将日期数据进行必要的转化。

import mpl_finance import tushare as ts import pandas as pd import seaborn as sns import matplotlib.pyplot as plt from matplotlib import ticker from matplotlib.pylab import date2num import numpy as np sns.set() pro = ts.pro_api()

获取行情数据

我们以上证综指18年9月份以来的行情为例。

这里我们对数据按照日期做了个排序,因为tushare默认提供的数据是最新的数据在最前边;我们用pd.to_datetime()将字符串日期转换为pandas Timestamp格式(类似datetime.datetime),然后用date2num转换为matplotlib需要的格式。然后我们另外添加一列dates,这一列用于解决mpl_finance中存在的一些问题,后边我们会详细解释。

绘制K线图

我们先使用mpl_finance绘制一下,看看是否一切正常。

fig, ax = plt.subplots(figsize=(10,5)) mpl_finance.candlestick_ochl( ax=ax, quotes=df[['trade_date', 'open', 'close', 'high', 'low']].values, width=0.7, colorup='r', colordown='g', alpha=0.7) ax.xaxis_date() plt.xticks(rotation=30);

可以看到,所有的节假日包括周末,在这里都会显示为空白,这对于我们图形的连续性非常不友好,因此我们要解决掉他们。

解决空白问题

def format_date(x,pos): if xlen(date_tickers)-1: return '' return date_tickers[int(x)] date_tickers = df.trade_date2.values fig, ax = plt.subplots(figsize=(10,5)) ax.xaxis.set_major_formatter(ticker.FuncFormatter(format_date)) mpl_finance.candlestick_ochl( ax=ax, quotes=df[['dates', 'open', 'close', 'high', 'low']].values, width=0.7, colorup='r', colordown='g', alpha=0.7) ax.set_title('上证综指K线图(2018.9-)', fontsize=20);

可以看到,空白问题完美解决,这里我们解释一下。由于matplotlib会将日期数据理解为连续数据,而连续数据之间的间距是有意义的,所以非交易日即使没有数据,在坐标轴上还是会体现出来。连续多少个非交易日,在坐标轴上就对应了多少个小格子,但这些小格子上方并没有相应的蜡烛图。

明白了它的原理,我们就可以对症下药了。我们可以给横坐标(日期)传入连续的、固定间距的数据,先保证K线图的绘制是连续的;然后生成一个保存有正确日期数据的列表,接下来,我们根据坐标轴上的数据去取对应的正确的日期,并替换为坐标轴上的标签即可。

上边format_date函数就是这个作用。由于前边我们给dates列生成了从0开始的序列连续数据,因此我们可以直接把它当作索引,从真正的日期列表里去取对应的数据。在这里我们要使用matplotlib.ticker.FuncFormattter()方法,它允许我们指定一个格式化坐标轴标签的函数,在这个函数里,我们需要接受坐标轴的值以及位置,并返回自定义的标签。

你学会了吗?

当然,一个完整的K线图到这里并没有结束,后边我们会考虑加入均线、成交量等元素,感兴趣的同学欢迎关注哦!

标签组:[分类数据] [坐标轴

上一篇股票 K线图 蜡烛图

下一篇股票成交量k线图怎么看

相关阅读

相同话题文章

推荐内容

热门阅读