本教程將從以下幾個方面詳細介紹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/zh-hant/n/374799.html