matplotlib 安装_30分钟入门 Matplotlib 绘图

6344c22749862d0105dc85dea07ca3c0.png

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的环境安装成功了。

52de71325aee2fa1da74ea349f8eb2e7.png

散点图

91b81f9b37e3ca8c4030ea8d9c1c7804.png

绘制身高-体重的散点图

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()

运行脚本输出以下图形。

8067f637450aa4abed752452ff42fab0.png

散点图主要演示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()

运行脚本输出以下图形

57501916c301dce14b5e72090435bf0b.png

折线图

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

4c1a66b791396754dc45baed58466c4a.png

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

示例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()

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

68ef11b6811a7d44c4e35a81450bb4eb.png

在上图中,我们使用线程方程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()

运行脚本输出以下图形。

c971c59bf2850bdfdcc99fefb62defbe.png

柱状图

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

668f0b107582f74fbff34b7fb34605c3.png

例子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()

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

e030085a43b9c5cc922911212cea1fff.png

图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()

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

92d453e7ce88bd4c249d54333bd92fc2.png

这个案例的核心代码如下,首先使用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' )

留言回复你在机器学习方面做过哪些有趣的应用,我们会在留言中随机抽取一位读者免费送出北京大学出版社出版的《Python 3.x全栈开发从入门到精通》图书一本。通过“拆解式”讲解Python全栈开发全过程,本书集理论、技术、案例、项目开发经验为一体,通过海量示例展示开发过程中的重点、疑点、难点,是一本宝典式大全教程。

b6a1bdbf582407ca897a8dd92c4c579f.png

热 门 推 荐用Python创建微信机器人用Python机器人监听微信群聊用Python获取摄像头并实时控制人脸开源项目 | 用Python美化LeetCode仓库 推荐Python中文社区旗下的几个服务类公众号 征稿启事 | Python中文社区有奖征文

5d3c816ff1e4461cca7ed3c440f75505.gif

▼ 点击成为社区注册会员          「在看」一下,一起PY!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值