在 Python3 環境下使用 Python2 代碼時,碰到了如下的語句:
#import matplotlib.finance as mpf
需要安裝 pip install mpl_finance ,然後用下面的語句取代。
import mpl_finance as mpf
mpf_kline.py
# coding: utf-8
import os, sys
import datetime
import matplotlib.pyplot as plt
from matplotlib.pylab import date2num
#import matplotlib.finance as mpf
import mpl_finance as mpf
import pandas as pd
import tushare as ts
##繪制K線圖+移動平均線
if len(sys.argv) ==2:
code = sys.argv[1]
else:
print('usage: python mpf_kline.py stockcode ')
sys.exit(1)
if len(code) !=6:
print('stock code length: 6')
sys.exit(2)
# help(ts.get_k_data) 了解參數
df = ts.get_k_data(code)
df = df[ df['date'] >'2020-01-01']
print(df.tail())
if len(df) <10:
print(" len(df) <10 ")
sys.exit(2)
# 對tushare擷取到的資料轉換成 candlestick_ohlc()方法可讀取的格式
alist = []
tlist = []
for idx,row in df.iterrows():
date,open,close,high,low,volume = row[0:6]
# 将日期轉換為數字
date1 = datetime.datetime.strptime(date,'%Y-%m-%d')
t = date2num(date1)
data = (t,open,high,low,close)
alist.append(data)
tlist.append(t)
# 加這個兩句 可以顯示中文
plt.rcParams['font.sans-serif'] = [u'SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 建立子圖
fig, ax = plt.subplots()
fig.subplots_adjust(bottom=0.2)
# 設定X軸刻度為日期時間
ax.xaxis_date()
ax.autoscale_view()
#plt.setp(plt.gca().get_xticklabels(), rotation=45)
plt.xticks(rotation=45)
plt.yticks()
plt.title("股票 {0}:K線圖".format(code))
plt.xlabel("date")
plt.ylabel("price")
mpf.candlestick_ohlc(ax,alist,colorup='red',colordown='green')
# 畫 10日均線
df['ma10'] = df['close'].rolling(window=10).mean()
plt.plot(tlist, df['ma10'].values, 'blue', label='ma10')
plt.legend(loc='best', shadow=True)
plt.grid()
plt.show()
運作 python mpf_kline.py 000063
參考: 利用 python numpy +matplotlib 繪制股票k線圖