使用mplfinance的時候,我們通過設(shè)定參數(shù)style,可以得到多種多樣的圖像風格。style參數(shù)常用的內(nèi)置樣式有:'binance’, 'blueskies’, 'brasil’, 'charles’, 'checkers’, 'classic’, 'default’, 'mike’, 'nightclouds’, 'sas’, 'starsandstripes’, 'yahoo’。
這些內(nèi)置樣式中,很多都是按照美股的習(xí)慣紅色表示下跌,韭菜色(綠色)表示上漲。這與我們A股的顯示習(xí)慣剛好是相反的。
當這些樣式滿足不了我們的需求,或者說我們有更美的靈感與創(chuàng)造的時候,我們也可以自己定義樣式。
我們使用 mpf.make_mpf_style()函數(shù)來設(shè)定新的風格樣式,然后將其傳給mpf.plot()的參數(shù)style即可。
第一步,我們照常扒拉數(shù)據(jù):
# 從tushare調(diào)取 牧原股份(002714.SZ) 股價數(shù)據(jù) import tushare as ts import pandas as pd import mplfinance as mpf token = 'Your token' # 輸入你的接口密匙,獲取方式及相關(guān)權(quán)限見Tushare官網(wǎng)。 pro = ts.pro_api(token) df = pro.daily(ts_code='002714.SZ') # 然后 將該DataFrame對象處理為適合我們使用的格式 df = df.loc[:, ['trade_date', 'open', 'high', 'low', 'close', 'vol']] df.rename( columns={ 'trade_date': 'Date', 'open': 'Open', 'high': 'High', 'low': 'Low', 'close': 'Close', 'vol': 'Volume'}, inplace=True) # 重定義列名,方便統(tǒng)一規(guī)范操作。 df['Date'] = pd.to_datetime(df['Date']) # 轉(zhuǎn)換日期列的格式,便于作圖 df.set_index(['Date'], inplace=True) # 將日期列作為行索引 df = df.sort_index() # 倒序,因為Tushare的數(shù)據(jù)是最近的交易日數(shù)據(jù)顯示在DataFrame上方,倒序后方能保證作圖時X軸從左到右時間序列遞增。
第二步,我們先使用一下mpf.make_marketcolors()函數(shù),來設(shè)定一下K線的顏色方面的信息。一會兒要把這個設(shè)定的結(jié)果作為實參傳給mpf.make_mpf_style()來設(shè)定自定義的風格樣式。
mc = mpf.make_marketcolors( up="red", # 上漲K線的顏色 down="green", # 下跌K線的顏色 edge="black", # 蠟燭圖箱體的顏色 volume="blue", # 成交量柱子的顏色 wick="black" # 蠟燭圖影線的顏色 ) # 還有一個叫alpha的參數(shù),設(shè)置的是candlestick face,取值在0.1-1之間。這個設(shè)置的是K線蠟燭顏色的深淺,比如把當alpha設(shè)置為0.6的時候紅色蠟燭就變成了接近橘黃色。綠色就變成了翠綠色。這個根據(jù)自己的感官來嘗試選擇就好啦。
mc設(shè)置好后,接下來我們要將其傳給mpf.make_mpf_style()的marketcolors參數(shù),來設(shè)定自定義的風格樣式了。
第三步,我們開始設(shè)定自定義的風格樣式了。
使用mpf.make_mpf_style函數(shù),其參數(shù)有:
base_mpf_style:繼承內(nèi)置的風格,不想繼承的話就不需要設(shè)置。這里我們不設(shè)置,純靠自定義。
mavcolors 設(shè)置均線樣式,必須使用列表傳參
facecolor 設(shè)置前景色(坐標系顏色)
edgecolor 設(shè)置框線樣式
figcolor 設(shè)置圖像外周邊填充色
gridcolor 設(shè)置網(wǎng)格線顏色
gridaxis 設(shè)置網(wǎng)格線方向,both雙向 'horizontal’水平, 'vertical’垂直
gridstyle 設(shè)置網(wǎng)格線線型 例如
'-’/'solid’, '–’/'dashed’, '-.’/'dashdot’, ':’/'dotted’, None/’ '/’’
y_on_right 設(shè)置y軸位置是否在右
rc 使用rcParams的dict設(shè)置樣式,如果內(nèi)容與上面的自定義設(shè)置相同,那么自定義設(shè)置覆蓋rcParams設(shè)置
這個參數(shù)常用的寫法為:
rc={'font.family’: 'SimHei’, 'axes.unicode_minus’: 'False’}
是用來解決 mplfinance庫生成的圖象 中文亂碼 和不顯示負數(shù)的問題的。
marketcolors 就是上一步我們定義的那個K線的屬性,把它傳入就OK了。
s = mpf.make_mpf_style( gridaxis='both', gridstyle='-.', y_on_right=True, marketcolors=mc, edgecolor='b', figcolor='r', facecolor='y', gridcolor='c')
第四步,開始使用mpf.plot()繪圖了,傳入上邊設(shè)定好的風格s
mpf.plot(df.loc['2020-11': '2020-12'], type='candle', ylabel="price", style=s, title='A_stock-Muyuan 2020-Nov&Dec_candle_line', mav=(5, 10), volume=True, ylabel_lower="volume(shares)")
最終效果如圖所示:
呃呃呃…找了半天,mplfinance庫貌似也是存在一個缺點的。
源代碼扒了半天也沒有找到能自定義背景圖的圖片的參數(shù),
也許是考慮到金融量化不需要二次元吧。
這對于二次元宅無疑是一項不小的打擊。
算了,matplotlib.pyplot雖然句子寫得長些,這一點還是挺好的哈哈哈哈哈哈。
更多方法技巧點擊下方姊妹篇文章鏈接:
mplfinance基本參數(shù)介紹:
Python mplfinance庫繪圖① 基本參數(shù)介紹(簡單秒懂)
關(guān)于如何解決 mplfinance 中文亂碼 和 圖像不正常顯示負數(shù)的問題:
Python mapfinance庫②中文標題亂碼 與 顯示負數(shù) 解決方案
關(guān)于如何在這種高度封裝的狀態(tài)下繪圖時添加一條其他曲線:
Python mplfinance庫繪圖③ 如何額外添加一條其他圖線
聯(lián)系客服