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阅读 216,843评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,538评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,187评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,264评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,289评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,231评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,116评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,945评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,367评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,581评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,754评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,458评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,068评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,692评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,842评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,797评论 2 369
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,654评论 2 354

推荐阅读更多精彩内容