python的matplotlib库_python matplotlib库的使用
发布日期:2021-06-24 11:28:26 浏览次数:3 分类:技术文章

本文共 4577 字,大约阅读时间需要 15 分钟。

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

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

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

转载地址:https://blog.csdn.net/weixin_32503531/article/details/112831978 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:python反正切_python numpy np.arctan2()函数(批量计算反正切?)
下一篇:r语言必学的十个包肖凯_【R语言】必学包之dplyr包

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月01日 16时10分37秒