python下载matplotlib库_python matplotlib库的使用

这篇博客通过Python的matplotlib库展示了如何绘制上证50指数的历史最高价和收盘价走势,并结合tushare获取实时数据。作者首先介绍了数据获取和处理,然后利用matplotlib创建折线图,并设置了图形风格、添加了网格线。接着,选取了低价股进行分析,绘制了这些股票与上证50指数的对比图,提供了清晰的走势对比。
摘要由CSDN通过智能技术生成

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

至此,我们得到了上证大盘和各低价股的走势对比图

料已备好。。。。。。可以发挥想象力了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值