python matplotlib庫的使用

matplotlib畫折線圖
(一)matplotlib配置屬性
以一個例子開始:
假如我們想做一個上證50指數歷史最高價、收盤價走勢折線圖。
首先,需要取得構建圖像的數據,也就是獲得坐標軸的(x,y)。這里我們從Tushare獲取數據。
引入tushare模塊

import tushare as ts
#導入上證50指數數據
#兩個日期之間的前復權數據
data = ts.get_hist_data('sz50',start='2016-11-01',end='2016-12-30')
data = data.sort_index()

引入matplotlib模塊

import matplotlibimport matplotlib.pyplot as plt
#為了防止出現中文亂碼,在這里進行一下設置
font = matplotlib.font_manager.FontProperties(fname='C:\Windows\Fonts\simsun.ttc')

獲取橫縱坐標

from matplotlib.pylab import datestr2num
#使用matplotlib.pylab的datestr2num方法,將時間字符串轉換為數字(這里縱坐標想要傳入日期數據,同時我們也知道橫坐標需要傳入數字型數據,而我們獲取的數據日期格式為字符串)
 #橫坐標
x_date = [datestr2num(i) for i in data.index] 
#縱坐標
y_date_close = data['close']
y_date_high = data['high']

現在橫坐標已經有了,下面我們可以開始畫圖了,首先我們要有一張“畫布”,定義一個figure對象,即圖形對象。

plt.figure(figsize=(10,5))

畫折線

plt.plot_date(x_date,y_date_close,'-',label="closing price")
plt.plot_date(x_date,y_date_high,'-',label="peak price")

簡陋的折線圖

折線畫好了,為了使圖像更加直觀,需要加上圖示,標簽,標題等信息,以便觀看。

#定義圖像標題
plt.title("上證50指數歷史最高價、收盤價走勢折線圖",fontproperties=font,fontsize = 10)
#坐標軸標簽
plt.xlabel("時間",fontproperties=font)
plt.xticks(rotation=0)   #可以使坐標刻度傾斜,這里傾斜0度
plt.ylabel("指數",fontproperties=font)
#加入圖示
plt.legend()
增加了信息后的折線圖.png

圖像做好了,但看著實在是。。。不忍直視!
接下來美化一下。
在這里,我們使用了plt.style.use來設置圖形的風格為ggplot。
matplotlib官方提供了五種不同的圖形風格,分別是:bmh、ggplot、dark_background、fivethirtyeight和grayscale。

#定義圖形風格
plt.style.use('ggplot')
# 添加圖表網格線
plt.grid(True)
美化后依然丑陋的圖像.png

為了便于觀看,修改了部分參數(將標題字體大小設置為50)
示例代碼:

import matplotlibimport matplotlib.pyplot as plt
from matplotlib.pylab import datestr2num
import tushare as ts
font = matplotlib.font_manager.FontProperties(fname='C:\Windows\Fonts\simsun.ttc')
data = ts.get_hist_data('sz50',start='2016-11-01',end='2016-12-30')
data = data.sort_index()
x_date = [datestr2num(i) for i in data.index]
y_date_close = data['close']
y_date_high = data['high']
plt.style.use('ggplot')
plt.figure(figsize=(10,5))
plt.plot_date(x_date,y_date_close,'-',label="closing price")
plt.plot_date(x_date,y_date_high,'-',label="peak price")
plt.title("上證50指數歷史最高價、收盤價走勢折線圖",fontproperties=font,fontsize=50)
plt.xlabel("時間",fontproperties=font)
plt.xticks(rotation=0)
plt.ylabel("指數",fontproperties=font)
plt.legend()
plt.grid(True)
plt.show()

一定要加上plt.show(),否則無法顯示圖像!!!重要的事情說三遍!

圖像會畫了,來搞個稍微復雜點的圖吧!
(二)matplotlib
(三)matplotlib實踐
天天聽別人說低價股,甚至簡單的將三元以下的股票說成低價股,完全忽略股票的內在價值不談,雖然看著有點扯淡,但是不防拿來實踐一下,找出大盤股低于三元的股票分析一下。

import tushare as ts
# 獲取實時行情數據
hq = ts.get_today_all()
# 節選出股票代碼code、名稱name、漲跌幅changepercent、股價trade
hq = hq[['code','name','changepercent','trade']]
# 篩選出當前股價高于0元低于3元的股票信息
mins = hq.trade>0.00
maxs = hq.trade<=2.99
allselect = mins & maxs
#print(allselect)
data = hq[allselect].sort_values(by = 'trade')
#print(data)
code_list = []
for c in data.code:   
    if c[0] != "0":        
        code_list.append(c)
#print(code_list)
sh_hist_data = ts.get_hist_data(code='sh',start='2014-12-01',end='2016-12-01')
sh_hist_data = sh_hist_data[['open','high','close','low','volume','price_change','p_change']].sort_index()
import matplotlib.pyplot as plt
from matplotlib.pylab import datestr2num
import matplotlib
# 設置中文字體
font = matplotlib.font_manager.FontProperties(fname='C:\Windows\Fonts\simsun.ttc')
dates = [datestr2num(i) for i in sh_hist_data.index]
plt.figure(figsize=(40,30))
# 新建一個子圖,繪制上證指數走勢
plt.subplot(311)
plt.title("2014年12月1日至2017年1月9日上證指數最低價走勢",fontproperties=font,fontsize=10)
plt.xticks(rotation=0,fontsize=10)
plt.yticks(fontsize=10)
plt.plot_date(dates,sh_hist_data.low,'-',linewidth=1.5)
plt.grid(True)
# 遍歷低價股代碼列表,繪制股價走勢
#由于折線太多,在這里分開遍歷。
for i in code_list[0:5]:    
    hist_data = ts.get_hist_data(code=i,start='2014-12-01',end='2017-1-09')  
    code_data = hist_data[['open','high','close','low','volume','price_change','p_change']].sort_index()
    dates = [datestr2num(t) for t in code_data.index]
    plt.subplot(312)
    plt.title("2014年12月1日至2017年1月9日各低價股最低價走勢",fontproperties=font,fontsize=10)
    plt.xticks(rotation=0,fontsize=10)
    plt.yticks(fontsize=10)
    plt.plot_date(dates,code_data['low'],'-',linewidth=1.5,label=i)
    plt.legend(loc=1,fontsize=10)
    plt.grid(True)
for i in code_list[5:]:
    hist_data = ts.get_hist_data(code=i,start='2014-12-01',end='2017-1-09')
    code_data = hist_data[['open','high','close','low','volume','price_change','p_change']].sort_index()
    dates = [datestr2num(t) for t in code_data.index]
    plt.subplot(313)
    plt.title("2014年12月1日至2017年1月9日各低價股最低價價走勢",fontproperties=font,fontsize=10)
    plt.xticks(rotation=0,fontsize=10)
    plt.yticks(fontsize=10)
    plt.plot_date(dates,code_data['low'],'-',linewidth=1.5,label=i)
    plt.legend(loc=1,fontsize=10)
    plt.grid(True)
plt.show()
對比圖.png

至此,我們得到了上證大盤和各低價股的走勢對比圖
料已備好。。。。。。可以發揮想象力了

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,443評論 6 532
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,530評論 3 416
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,407評論 0 375
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,981評論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,759評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,204評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,263評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,415評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,955評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,782評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,983評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,528評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,222評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,650評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,892評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,675評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,967評論 2 374

推薦閱讀更多精彩內容