基本画图简介
matplotlib中原来有candlesticks函数画K线图,后来该函数被移出matplotlib.finance库。
现状是 画K线图函数在模块candlestick_ohlc中,但后期想自定义K线图不方便(例如在K线图中添加几个文本备注)。
特此,查看原candlesticks函数源码后,抽取核心代码封装成函数,方便后期调整K线图。
from matplotlib.lines import Line2D
from matplotlib.patches import Rectangle
def candlestick_K(ax, quotes, width=0.2, colorup='k', colordown='r', alpha=1):
'''
ax:坐标轴
quotes:zip(索引, 开盘价, 最高价, 最低价, 收盘价)
colorup:上涨Kbar的颜色
colordown:下跌kbar的颜色
alpha:K线阴影值
return:
lines:线对象
patch:矩阵对象
'''
OFFSET = width/2.0
lines = []
patches = []
for q in quotes:
t, open, high, low, close = q[:5]
# 判断该Kbar是涨是跌从而决定颜色
if close >= open:
color = colorup
lower = open
height = close - open
else:
color = colordown
lower = close
height = open - close
# 线图图形
vline = Line2D(
xdata=(t, t), ydata=(low,high),
color=color,
linewidth=0.5,
antialiased=True,
)
# 矩阵图形
rect = Rectangle(
xy = (t-OFFSET, lower),
width = width,
height = height,
facecolor = color,
edgecolor = color,
)
rect.set_alpha(alpha)
lines.append(vline)
patches.append(rect)
ax.add_line(vline)
ax.add_patch(rect)
ax.autoscale_view()
return lines, patches