本教程将从以下几个方面详细介绍Python画K线的方法及技巧,包括数据处理、图表绘制、基本设置等等。
一、数据处理
1、获取数据
在Python中可以使用Pandas库获取K线数据。通过以下代码可以获取A股市场某只股票的历史K线:
import tushare as ts import pandas as pd # 获取A股市场某只股票的历史K线 df = ts.get_hist_data('600519')
2、数据预处理
在获取到原始数据后,需要对数据进行预处理,提取出需要用到的部分,包括时间、开盘价、收盘价、最高价、最低价等。
# 从获取到的原始数据中提取时间、开盘价、收盘价、最高价、最低价等信息 data_list = [] for date, row in df.iterrows(): data_list.append([date.strftime('%Y-%m-%d'), row['open'], row['close'], row['high'],row['low']])
二、图表绘制
1、使用Matplotlib绘制K线图
使用Matplotlib库的finance子库可以方便的绘制出K线图。
import matplotlib.pyplot as plt from mpl_finance import candlestick2_ohlc # 创建一个子图 fig, ax = plt.subplots() # 绘制K线 candlestick2_ohlc(ax, data_list) # 设置x轴的刻度及标签 ax.set_xticks(range(0, len(data_list), 30)) ax.set_xticklabels([data_list[i][0] for i in range(0, len(data_list), 30)]) # 设置标题等基本属性 ax.set_title('K Line Chart') ax.set_xlabel('Date') ax.set_ylabel('Price') plt.show()
2、使用Plotly绘制K线图
使用Plotly库可以绘制出交互式的K线图,并且支持导出HTML文件。
import plotly.graph_objs as go # 创建K线图数据 data = [ go.Candlestick( x=[row[0] for row in data_list], open=[row[1] for row in data_list], high=[row[3] for row in data_list], low=[row[4] for row in data_list], close=[row[2] for row in data_list] ) ] # 定义布局 layout = go.Layout( title='K Line Chart', xaxis=dict( title='Date', rangeslider=dict( visible=False ) ), yaxis=dict( title='Price' ) ) # 创建图表 fig = go.Figure(data=data, layout=layout) # 在浏览器中显示图表 fig.show() # 导出图表为HTML文件 fig.write_html('kline_chart.html')
三、基本设置
1、设置K线的颜色及线型
# 在Matplotlib中设置K线的线宽、颜色、形状等 candlestick2_ohlc(ax, data_list, width=0.5, colorup='r', colordown='g') # 在Plotly中设置K线的线宽、颜色、形状等 data = [ go.Candlestick( x=[row[0] for row in data_list], open=[row[1] for row in data_list], high=[row[3] for row in data_list], low=[row[4] for row in data_list], close=[row[2] for row in data_list], increasing=dict(line=dict(width=1, color='red')), decreasing=dict(line=dict(width=1, color='green')) ) ]
2、设置K线的显示范围
# 在Matplotlib中设置K线的显示范围 ax.set_xlim(0, len(data_list)) ax.set_ylim(min([row[4] for row in data_list]) * 0.9, max([row[3] for row in data_list]) * 1.1) # 在Plotly中设置K线的显示范围 layout = go.Layout( xaxis=dict( range=['2010-01-01', '2022-01-01'] ), yaxis=dict( range=[min([row[4] for row in data_list]) * 0.9, max([row[3] for row in data_list]) * 1.1] ) )
3、设置K线的其他属性
# 在Matplotlib中设置K线的其他属性 ax.grid(True) # 显示网格线 ax.format_xdata = mdates.DateFormatter('%Y-%m-%d') # 设置x轴显示格式为年-月-日 ax.xaxis_date() # x轴刻度显示为日期 # 在Plotly中设置K线的其他属性 layout = go.Layout( title='K Line Chart', xaxis=dict( title='Date', rangeslider=dict( visible=False ) ), yaxis=dict( title='Price' ), showlegend=False, # 不显示图例 hovermode='x' # 鼠标悬停后显示的数据 )
原创文章,作者:FUKZG,如若转载,请注明出处:https://www.506064.com/n/374799.html