import?matplotlib.pyplot?as?plt
十載的呼倫貝爾網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。成都全網(wǎng)營銷的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整呼倫貝爾建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)從事“呼倫貝爾網(wǎng)站設(shè)計(jì)”,“呼倫貝爾網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
from?matplotlib.dates?import?DateFormatter,?WeekdayLocator,?DayLocator,?MONDAY,YEARLY
from?matplotlib.finance?import?quotes_historical_yahoo_ohlc,?candlestick_ohlc
plt.rcParams['font.sans-serif']?=?['SimHei']
plt.rcParams['axes.unicode_minus']?=?False
ticker?=?'600028'?#?600028?是"中國石化"的股票代碼
ticker?+=?'.ss'???#?.ss?表示上證?.sz表示深證
date1?=?(2015,?8,?1)?#?起始日期,格式:(年,月,日)元組
date2?=?(2016,?1,?1)??#?結(jié)束日期,格式:(年,月,日)元組
mondays?=?WeekdayLocator(MONDAY)????????????#?主要刻度
alldays?=?DayLocator()??????????????????????#?次要刻度
#weekFormatter?=?DateFormatter('%b?%d')?????#?如:Jan?12
mondayFormatter?=?DateFormatter('%m-%d-%Y')?#?如:2-29-2015
dayFormatter?=?DateFormatter('%d')??????????#?如:12
quotes?=?quotes_historical_yahoo_ohlc(ticker,?date1,?date2)
if?len(quotes)?==?0:
raise?SystemExit
fig,?ax?=?plt.subplots()
fig.subplots_adjust(bottom=0.2)
ax.xaxis.set_major_locator(mondays)
ax.xaxis.set_minor_locator(alldays)
ax.xaxis.set_major_formatter(mondayFormatter)
#ax.xaxis.set_minor_formatter(dayFormatter)
#plot_day_summary(ax,?quotes,?ticksize=3)
candlestick_ohlc(ax,?quotes,?width=0.6,?colorup='r',?colordown='g')
ax.xaxis_date()
ax.autoscale_view()
plt.setp(plt.gca().get_xticklabels(),?rotation=45,?horizontalalignment='right')
ax.grid(True)
plt.title('中國石化?600028')
plt.show()
使用matplotlib模塊,相關(guān)API請(qǐng)查看網(wǎng)頁鏈接
只要你是個(gè)圖,它就能給你畫出來。
希望可以幫到你
不管是對(duì)量化分析師還是普通的投資者來說,K線圖(蠟燭圖)都是一種很經(jīng)典、很重要的工具。在K線圖中,它會(huì)繪制每天的最高價(jià)、最低價(jià)、開盤價(jià)和收盤價(jià),這對(duì)于我們理解股票的趨勢(shì)以及每天的多空對(duì)比很有幫助。
一般來說,我們會(huì)從各大券商平臺(tái)獲取K線圖,但是這種情況下獲得的K線圖往往不能靈活調(diào)整,也不能適應(yīng)復(fù)雜多變的生產(chǎn)需求。因此我們有必要學(xué)習(xí)一下如何使用Python繪制K線圖。
需要說明的是,這里mpl_finance是原來的matplotlib.finance,但是現(xiàn)在獨(dú)立出來了(而且好像沒什么人維護(hù)更新了),我們將會(huì)使用它提供的方法來繪制K線圖;tushare是用來在線獲取股票數(shù)據(jù)的庫;matplotlib.ticker中有個(gè)FuncFormatter()方法可以幫助我們調(diào)整坐標(biāo)軸;matplotlib.pylab.date2num可以幫助我們將日期數(shù)據(jù)進(jìn)行必要的轉(zhuǎn)化。
我們以上證綜指18年9月份以來的行情為例。
我們先使用mpl_finance繪制一下,看看是否一切正常。
可以看到,所有的節(jié)假日包括周末,在這里都會(huì)顯示為空白,這對(duì)于我們圖形的連續(xù)性非常不友好,因此我們要解決掉他們。
可以看到,空白問題完美解決,這里我們解釋一下。由于matplotlib會(huì)將日期數(shù)據(jù)理解為 連續(xù)數(shù)據(jù) ,而連續(xù)數(shù)據(jù)之間的間距是有意義的,所以非交易日即使沒有數(shù)據(jù),在坐標(biāo)軸上還是會(huì)體現(xiàn)出來。連續(xù)多少個(gè)非交易日,在坐標(biāo)軸上就對(duì)應(yīng)了多少個(gè)小格子,但這些小格子上方并沒有相應(yīng)的蠟燭圖。
明白了它的原理,我們就可以對(duì)癥下藥了。我們可以給橫坐標(biāo)(日期)傳入連續(xù)的、固定間距的數(shù)據(jù),先保證K線圖的繪制是連續(xù)的;然后生成一個(gè)保存有正確日期數(shù)據(jù)的列表,接下來,我們根據(jù)坐標(biāo)軸上的數(shù)據(jù)去取對(duì)應(yīng)的正確的日期,并替換為坐標(biāo)軸上的標(biāo)簽即可。
上邊f(xié)ormat_date函數(shù)就是這個(gè)作用。由于前邊我們給dates列生成了從0開始的序列連續(xù)數(shù)據(jù),因此我們可以直接把它當(dāng)作索引,從真正的日期列表里去取對(duì)應(yīng)的數(shù)據(jù)。在這里我們要使用matplotlib.ticker.FuncFormattter()方法,它允許我們指定一個(gè)格式化坐標(biāo)軸標(biāo)簽的函數(shù),在這個(gè)函數(shù)里,我們需要接受坐標(biāo)軸的值以及位置,并返回自定義的標(biāo)簽。
你學(xué)會(huì)了嗎?
當(dāng)然,一個(gè)完整的K線圖到這里并沒有結(jié)束,后邊我們會(huì)考慮加入均線、成交量等元素,感興趣的同學(xué)歡迎關(guān)注哦!