python matplotlib绘制折线图_Matplotlib实践系列:折线图完全示例

matplotlib是Python下最常用的数据可视化绘图库,功能强大,绘图精美,虽然也有基于matplotlib的seabron库,极大得简化的绘图的流程,但个人还是更加偏向于在静态数据可视化方面使用matplotlib来进行绘图工作。

下面,我们从matplotlib的一个折线图开始,了解如何使用matplotlib绘制可观的图形。

此文简陋,权作引路,更丰富详细的用法和实例,还请自己到matplotlib官网上详参。

一、引入matplotlib

import sys

sys.path.append('C:\Python34\Lib\site-packages')

import matplotlib.pyplot as plt

import tushare as ts

%matplotlib inline

在此, 我们使用tushare模块的股票数据来作为绘图的演示数据

# 获取上证50指数的历史数据

data = ts.get_hist_data('sz50',start='2016-11-01',end='2016-12-30')

data = data.sort_index()

首先,我们绘制一个基本的折线图

# 一个基本的折线图

x = range(len(data))

# 收盘价的折线图

plt.plot(x,data['close'])

简单的使用plot()方法就绘制出了一个基本的的折线图。

为了方便下面的演示,我们在图形里面再加入一个最高价的折线图

x = range(len(data))

plt.plot(x,data['close'])

plt.plot(x,data['high'])

在plot()方法后面,再加入一个绘制折线图的方法,就可以在同一个图形里绘制出第二条折线,就是这么简单。

但是我们发现两个问题,第一,图形过小不便于查看,第二,两条折线因为比较相近,颜色也不易区分,接下来,咱们设置一下图形的大小和线条的颜色。

# 设置图形大小和线条颜色

x = range(len(data))

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

plt.plot(x,data['close'])

plt.plot(x,data['high'])

嗯,实例化一个figure对象,使用参数figsize设置其大小为(16,8),这样,下面的绘图方法都是继承于figure这个对象的属性了。

我们再解决第二个问题,线条颜色

x = range(len(data))

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

plt.plot(x,data['close'])

plt.plot(x,data['high'],color='r')

我们在plot()方法里面使用color属性,把最高价的折线颜色设置为了红色,这样两条折线看起来就容易分清楚了。

但是这样的图片还是太过于简陋,我们把折线图的标题、X轴信息,Y轴信息,图例加上:

from matplotlib.pylab import datestr2num

x = range(len(data))

x_date = [datestr2num(i) for i in data.index]

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

plt.title("上证50指数历史最高价、收盘价走势折线图")

plt.xlabel("时间")

# plt.xticks(x,[i for i in data.index])

plt.ylabel("指数")

plt.plot_date(x_date,data['close'],'-',label="收盘价")

plt.plot_date(x_date,data['high'],'-',color='r',label="开盘价")

plt.legend()

因为X轴的信息为时间戳,在这里,我们使用的matplotlib.pylab的datestr2num方法,将时间字符串转换为数字,然后再通过plot_date()方法绘制出折线图,普通的X轴信息使用plt.xticks即可设置。

使用title()方法设置标题,xlable()方法设置X轴说明,ylable()方法设置Y轴说明,legend()方法设置图例

这样,一个基本的折线图就完成了,但是看着并不是很美观,我们把它美化一下。

x = range(len(data))

x_date = [datestr2num(i) for i in data.index]

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

plt.title("上证50指数历史最高价、收盘价走势折线图")

plt.xlabel("时间")

plt.xticks(rotation=45)

plt.ylabel("指数")

plt.plot_date(x_date,data['close'],'-',label="收盘价")

plt.plot_date(x_date,data['high'],'-',color='r',label="最高价")

plt.legend()

plt.grid()

这样虽然看起来比之前好看很多了,但是仍然觉得画面粗糙感很强,我们可以试着换一个图形主题。

x = range(len(data))

x_date = [datestr2num(i) for i in data.index]

plt.style.use('ggplot')

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

plt.title("上证50指数历史最高价、收盘价走势折线图")

plt.xlabel("时间")

plt.xticks(rotation=45)

plt.ylabel("指数")

plt.plot_date(x_date,data['close'],'-',label="收盘价")

plt.plot_date(x_date,data['high'],'-',label="最高价")

plt.legend()

plt.grid(True)

在这里,我们使用了plt.style.use来设置图形的风格为ggplot。

matplotlib官方提供了五种不同的图形风格,分别是:bmh、ggplot、dark_background、fivethirtyeight和grayscale。

更多matplotlib的用例,详见官网的说明。

========================================================

微信公众号:州的先生 不定期更新分享Python爬虫、数据分析、数据集下载,欢迎关注

你可能感兴趣的