python数据分析与展示(二)——Matplotlib库

目录

简介

 pyplot的plot函数

pyplot.plot()的参数

参数format_string

pyplot的中文显示

pyplot的文本显示

pyplot的子绘图区域

pyplot的基础图表函数

pyplot饼图的绘制

pyplot直方图的绘制:hist()

pyplot散点图的绘制(使用面向对象的方法)


简介

Matplotlib是python优秀的数据可视化第三方库,其官方网址为http://matplotlib.org。matplotlib库由各种可视化类构成,内部结构复杂。matplotlib.pyplot是绘制各种可视化图形的命令子库,相当于快捷方式,也就是说用户可以仅通过调用pyplot来使用matplotlib中所有的可视化类。因此我们使用matplotlib库重点是使用pyplot子库。调用方法:import matplotlib.pyplot as plt

例子1

例子2

 pyplot的plot函数

pyplot.plot()的参数

说明:当绘制多条曲线时,各条曲线的x不能省略。当只绘制一条曲线时,可以省略x,这时y的索引即为y对应的x。

例子1:绘制4条线

 

说明:上面的例子用到了plot的三个参数x,y,**kwargs。没有用到format_string,format_string用来控制曲线的格式。

参数format_string

format_string参数:用来控制曲线的格式字符串,可选,由颜色字符、风格字符和标记字符组成。

  1. 颜色字符

     

     说明:如果设置了颜色字符,则系统按照你设置的颜色显示曲线的颜色,负责系统将自动选择一个和和其它曲线不同的颜色显示。

  2. 风格字符:表示曲线的样子。说明:最后一个空格' '表示不绘制任何线条。空(即什么也不写)也表示不绘制任何线条。
  3. 标记字符:表示曲线中的数据点采用什么样的方式标记出来。

 例子2

 

说明:'go-'中'g'表示线条的颜色时绿色,'o'表示曲线上的数据点用'o'标记,'-'表示曲线的风格是实线,即上图中最下面那一条线。'rx'中的'r'表示线条的颜色是红色,'x'表示曲线上的数据点用'x'标记,因为风格字符为空,所以不画出曲线。 '*'表示曲线上的数据点用星号标记,因为没有指定颜色字符,所以系统将自动指定一种和其它线条不同的颜色。'b-.'中的'b'表示线条的颜色是蓝色,'-.'表示曲线的风格是点划线。

format_string除了使用上面提到的标记字符,也可以使用命令的方式。

pyplot的中文显示

pyplot并不默认地支持中文显示,所以要想在坐标上显示中文,需要增加额外的代码辅助。下面介绍两种方法。

方法一:rcParams

例子1

import matplotlib.pyplot as plt
import matplotlib

matplotlib.rcParams['font.family']='SimHei'
plt.plot([3,1,4,5,2])
plt.ylabel("纵轴(值)")
plt.show()

说明:上面代码中的'SemHei'指黑体。

rcParams的属性

rcParams['font.family']

例子2

说明:用这种方法改变的是全局字体,从图中可以看到,无论是中文,还是坐标轴上的数字,都变成了华文宋体,字号都变成了20。如果只希望某个地方有中文输出而不改变其它地方的字体,则可以使用第二种方法。

方法二:在有中文输出的地方,增加一个属性:fontproperities

 

 可以看到,只有xlabel和ylabel中的字体改变了。

pyplot的文本显示

pyplot的文本显示函数

例子1

import numpy as np
import matplotlib.pyplot as plt
import matplotlib

a=np.arange(0.0,5.0,0.02)
plt.plot(a,np.cos(2*np.pi*a),'r--')

plt.xlabel('横轴:时间',fontproperties='SimHei',fontsize=15,color='green')
plt.ylabel('纵轴:振幅',fontproperties='SimHei',fontsize=15)
#用一对$来引用Latex语法
plt.title(r'正弦波实例 $y=cos(2\pi x)$',fontproperties='SimHei',fontsize=25)
#前两个参数2,1表示文本显示的位置坐标,第三个参数表示显示的内容
plt.text(2,1,r'$\mu=100$',fontsize=15)

matplotlib.rcParams['axes.unicode_minus']=False  #解决负号不能正常显示问题
plt.axis([-1,6,-2,2]) #x轴的取值范围是-1到6,y轴的取值范围是-2到-2
plt.grid(True) #增加网格
plt.show()

例子2

plt.annotate(s,xy=arrow_crd,xytext=text_crd,arrowprops=dict)

说明:如上所示,annotete有4个参数,s表示文本内容,xy表示箭头的坐标,xytext表示文本的坐标,arrowprops是一个字典类型,定义了整个箭头显示的一些属性。

import numpy as np
import matplotlib.pyplot as plt
import matplotlib

a=np.arange(0.0,5.0,0.02)
plt.plot(a,np.cos(2*np.pi*a),'r--')

plt.xlabel('横轴:时间',fontproperties='SimHei',fontsize=15,color='green')
plt.ylabel('纵轴:振幅',fontproperties='SimHei',fontsize=15)
#用一对$来引用Latex语法
plt.title(r'正弦波实例 $y=cos(2\pi x)$',fontproperties='SimHei',fontsize=25)
#第一个参数表示要注释的内容,第二个参数xy表示箭头显示的坐标,第三个参数xytext表示要注释内容的坐标
#facecolor表示箭头的颜色,shrink表示箭头前后缩进0.1,即使箭头和坐标之间留有空隙,width表示箭头的宽度
plt.annotate(r'$\mu=100$',xy=(2,1),xytext=(3,1.5),arrowprops=dict(facecolor='black',shrink=0.1,width=2))

matplotlib.rcParams['axes.unicode_minus']=False  #解决负号不能正常显示问题
plt.axis([-1,6,-2,2]) #x轴的取值范围是-1到6,y轴的取值范围是-2到-2
plt.grid(True) #增加网格
plt.show()

pyplot的子绘图区域

1.plt.subplot(nrows,ncols,plot_number)

如上,subplot的前两个参数表示把绘图区域分为nrows行,ncols列。参数plot_number表示接下来的图像画在第plot_number个子区域上。

如plt.subplot(3,2,4)选中的子绘图区如下图所示。

说明,由于都是数字,plt.subplot(3,2,4)也可以写成plt.subplot(324)。

2. plt.subplot2grid()

plt.subplot2grid(GridSpec,CurSpec,colspan=1,rowspan=1)

理念:设定网格,选中网格,确定选中行列区域数量,编号从0开始。

例子1:plt.subplot2grid((3,3),(1,0),colspan=2)选中的子区域如下图中黄色方框ax2所示。

说明:第一个参数(3,3)表示将绘图区域划分为3行3列,第二个参数(1,0)表示选中的子区域在第1行第0列(行列数从0开始编号),第三个参数colspan表示在列上扩展选中两个区域。

例子2

 上面的代码生成的子区域如下图所示:

3.gridspec

pyplot的基础图表函数

pyplot饼图的绘制

例子1

import matplotlib.pyplot as plt

labels='frogs','Hogs','Dogs','Logs'
sizes=[15,30,45,10]
explode=(0,0.1,0,0)

#sizes表示每一项所占的百分比;explode中第二个数为0.1表示将第二项突出0.1;labels表示每一项所对应的标签;
#autopct表示百分数的显示方式;shadow表示饼图是否有阴影;starangle表示饼图的起始角度,即第一项从90°开始
plt.pie(sizes,explode=explode,labels=labels,autopct='%1.1f%%',shadow=False,startangle=90)

plt.show()

 

pyplot直方图的绘制:hist()

例子1

import numpy as np
import matplotlib.pyplot as plt

np.random.seed(0)
mu,sigma=100,20 #均值和标准差
a=np.random.normal(mu,sigma,size=100) #产生符合正态分布的数组,包含100个元素

plt.hist(a,20,normed=1,histtype='stepfilled',facecolor='b',alpha=0.75)
plt.title('Histogram')

plt.show()

说明:hist()中第二个参数20表示直方图的个数为20,即在x轴上将数据中最小值到最大值平均分为20份,统计每份中数据出现的个数。hist()中第三个参数normed=0 时从坐标表示每个直方中数据出现的个数,normed=1时纵坐标为概率(频率直方图)。

pyplot散点图的绘制(使用面向对象的方法)

实际上用plot()就能直接生成散点图(见上面介绍的plot函数),这里介绍的是面向对象的方法。

例子1

import numpy as np
import matplotlib.pyplot as plt

#将subplots()生成一个对象,figs和ax分别代表plt.subplots()生成的图表以及图表相关的区域,当subplots()的参数为空时,默认的参数是subplots(1,1,1)
fig,ax=plt.subplots()
ax.plot(10*np.random.randn(100),10*np.random.randn(100),'o')
ax.set_title('Simple Scatter')

plt.show()

注:以上内容摘抄总结自北京理工大学嵩天老师的慕课,以方便自己和大家查阅。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值