python绘图pylab python绘图matplotlib_数据

Matplotlib是一个主要用于绘制二维图形的Python库。数据可视化是数据分析的重要环节,借助图形能够帮助更加直观地表达出数据背后的”东西”。Matplolib最初主要模仿Matlab的画图命令,但是它是独立于Matlab的,可以自由、免费使用的绘图包。Matplotlib依赖于之前介绍的Numpy库来提供出色的绘图能力。

Matplotlib的官网地址

http://matplotlib.org/

MatplotlibAPI的详细介绍请参考官网地址:

http://matplotlib.org/api/index.html

Windows,Linux,Mac 三种操作系统都可以安装Matplotlib库。以Windows为例,进入CMD窗口中,使用pip命令安装Matplotlib,系统会自动进行安装。

pip install matplotlib

如果安装失败,可以使用国内的镜像来安装Matplotlib库,如下所示。

pip install matplotlib -ihttps://pypi.tuna.tsinghua.edu.cn/simple/

正常情况下,系统还会下载其它的关联安装包并完成安装,最后系统会提示已经安装成功Matplotlib了,如图所示。

我们使用Matplotligb画一个简单直线图。本案例的文件名为PythonFullStack/Chapter07/ pl_linechart.py,内容如下:

#导入 pyplot模块,并起一个别名 plt
import matplotlib.pyplot as plt
# 设置X轴的坐标为 [1,2,3],设置Y轴的坐标为 [3,2,1]
plt.plot( [1,2,3],[3,2,1] )
#画图
plt.show()

运行脚本如果可以显示下图形,说明Matplotlib的环境安装成功了。

python绘图pylab python绘图matplotlib_python绘图pylab_02


散点图

python绘图pylab python绘图matplotlib_数据_03

绘制身高-体重的散点图

import matplotlib.pyplot as plt

height=[161,170,182,175,173,165]
weight=[50,58,80,70,69,55]

#画图
plt.scatter(height,weight , alpha=0.7)
#设置X轴标签
plt.xlabel( 'height')
#设置Y轴标签
plt.ylabel( 'weight ')
#添加图的标题
plt.title('scatter demo')
# 图形显示
plt.show()

运行脚本输出以下图形。

python绘图pylab python绘图matplotlib_Python_04

散点图主要演示2个变量的相关性:正相关,负相关,不相关。我们先看下无相关性的散点图。

例子2:无相关性的散点图。

import numpy as np
import matplotlib.pyplot as plt

#设置随机数种子
np.random.seed(10)
#使用Numpy的随机函数,产生X轴和Y轴的数据,具有相同长度的数据
N= 100
x = np.random.randn(N)
y1=np.random.randn(N)
#画图
plt.scatter(x,y1 )
# 图形显示
plt.show()

运行脚本输出以下图形

python绘图pylab python绘图matplotlib_python绘图pylab_05

折线图

折线图,也叫条形图,是用直线将各数据连接起来组成的图形。常用来观察数据随时间变化的趋势。例如股票价格,温度变化等等,如图7-27所示。

python绘图pylab python绘图matplotlib_Python_06

上图的折线图是某公司近五年的汽车销售数据,折线图的横坐标是时间,纵坐标是销售量,表示随着时间的推移,销售量的变化趋势。

示例1: 显示 y = 2 x +1 的图形。

Matplotlib中最基础的模块式pyplot,下面从最简单的线图开始讲解,比如有一组数据,还有一个拟合模型,通过编写代码来实现数据与模型结果的可视化。

假设一个线性函数具有形式y = ax + b,自变量x,因变量是y,Y轴截距为b,斜率为a。
下面用简单的数据来描述线程方程y = 2x +1,代码如下。

import matplotlib.pyplot as plt
import numpy as np

# 生成等区间的Numpy数组ndarray,从-1到1分成50份。
x = np.linspace( -1 , 1, 50  )
#线程方程为y = 2x + 1
y = 2 * x + 1

# 设置X轴标签
plt.xlabel('X')
# 设置Y轴标签
plt.ylabel('Y ')
# 画图
plt.plot(x,y)
# 图形显示
plt.show()

运行脚本会输出以下图形。

python绘图pylab python绘图matplotlib_柱状图_07

在上图中,我们使用线程方程y = 2x +1画出的是直线图,如果想画出曲线图,只需要更改线程方程为y= x **2 ,完整代码如下。

import matplotlib.pyplot as plt
import numpy as np

# 设置X轴标签
plt.xlabel('X')
# 设置Y轴标签
plt.ylabel('Y ')

# 取5个点可以看到折线的效果
#x = np.linspace( -1 , 1, 5 )
x = np.linspace( -1 , 1, 50  )

# 线程方程为y = x ** 2 
y = x**2

# 画图
plt.plot (x,y)
# 图形显示
plt.show()

运行脚本输出以下图形。

python绘图pylab python绘图matplotlib_Python_08

柱状图

柱状图,也叫条形图,以长方形的长度为变量的统计视图。用来比较多个类别的数据大小。通常用来比较两个或以上的变量。如果只有一个变量,通常用于用于较小的数据集分析。例如:不同季度的销量,不同国家的人口等。

python绘图pylab python绘图matplotlib_数据_09

例子1:垂直柱状图。

本案例文件名为PythonFullStack/Chapter07/mpl_bar01,显示垂直的柱状图,其完整代码如下。

import numpy as np
import matplotlib.pyplot as plt

# 柱的个数,生成一个数组,从0到4
index = np.arange(5)
#柱的高度
y=[20,10,30,25,15]

#  画图,生成5个高度为y,柱的宽度为0.5,颜色是红色的柱体
p1 = plt.bar(left=index, height=y , width=0.5 , color='r' )
# 添加图的标题
plt.title("bar demo")
plt.show()

运行脚本会输出以下图形。

python绘图pylab python绘图matplotlib_数据_10

图733垂直柱状图

例子2:水平柱状图。

本案例文件名为PythonFullStack/Chapter07/mpl_bar02,显示水平的柱状图,其完整代码如下。


import numpy as np
import matplotlib.pyplot as plt

N = 5
# 柱的高度
y=[20,10,30,25,15]
# 柱的个数
index = np.arange(N)

#  画图,生成5个高度为y,方向是水平的,柱的宽度为0.8,颜色是蓝色的柱体
p2 = plt.bar(left=0,bottom=index, width=y,height=0.8,orientation ='horizontal' )
# 添加图的标题
plt.title("bar demo")
plt.show()

运行脚本会输出以下图形。

python绘图pylab python绘图matplotlib_数据_11

这个案例的核心代码如下,首先使用Numpy生成一个矩阵index,然后需要设置Matplotlib的bar()函数的bottom属性为index,表示柱状图的底部变成了index,水平垂直柱状图的横坐标变成了纵坐标,然后设置 plt.bar()函数的 left属性0,还要设置orientation属性为’horizontal’。orientation表示条形图的方向,设定的值horizontal’表示水平显示。看起来比较绕,但正是这种灵活性,才可以定制出复杂图形。

plt.bar(left=0,bottom=index, width=y,height=0.8,orientation ='horizontal' )