数据分析:单元4 Matplotlib库入门

Matplotlib 可能是 Python 2D-绘图领域使用最广泛的套件。它能让使用者很轻松地将数据图形化,并且提供多样化的输出格式。在这里我将介绍一下它的相关知识,你可以在这里快速学会如何用它画出好看的数据图像,如果你想学习到更多的知识,建议你可以在下面的介绍中找到官网学习。

目录

内容导论

Matplotlib库介绍

pyplot的plot()函数

pyplot的中文显示

pyplot的文本显示

pyplot的子绘图区域

本单元总结


Matplotlib库介绍

Matplotlib是python的优秀的数据可视化第三方库。你可以通过这里进入Matplotlib documentation — Matplotlib 3.6.0 documentation,它的下载方式已在此图中显示。Matplotlib库是由各种可视化类构成,内部结构复杂,受Matlab启发 matplotlib.pyplot是绘制各类可视化图形的命令子库,相当于快捷方式。

  • 效果图展示

在它的示例库中,我们可以看到有许许多多漂亮的表格。

  • Matplotlib的小小展示

import matplotlib.pyplot as plt
plt.plot([1,2,3,4,5],[3,5,4,1,2])
plt.ylabel("People")
plt.axis([-1,6,0,6])

plt.show()

 图像展示

 plt.plot(x,y)当有两个以上参数时,按照X轴和Y轴顺序绘制数据点

  • 绘图区域

plt.subplot(nrows, ncols, plot_number),如果我们想要几个图都在一个框内显示,就需要使用这个函数。它会在全局绘图区域中创建一个分区体系,并定位到一个子绘图区域。

比如plt.subplot(3,2,4),形成三个横轴,两个纵轴,子区域4:

代码的实现

import numpy as np
import matplotlib.pyplot as plt

def H(t):
    return np.exp(-t)*np.cos(2*np.pi*t)

a = np.arange(0.0,10,0.02)

plt.subplot(2,1,1)
plt.plot(a,H(a))

plt.subplot(212)
plt.plot(a,np.sin(2*np.pi*a),'r--')

plt.show()

由上代码,我们可以得到这样一个衰减曲线与sin函数。


pyplot的plot()函数

plt.plot(x, y, format_string, **kwargs)

x  : X轴数据,列表或数组,可选 

y  : Y轴数据,列表或数组

format_string: 控制曲线的格式字符串,可选

**kwargs : 第二组或更多(x,y,format_string) 

当绘制多条曲线时,各条曲线的x不能省略

import numpy as np
import matplotlib.pyplot as plt

a = np.arange(10)
plt.plot(a,a*1.5,a,a*2.5,a,a*3.5,a,a*4.5)

plt.show()

  •  format_string

控制曲线的格式字符串,可选,由颜色字符风格字符标记字符组成

  •  **kwargs

第二组或更多的(x,y,format_string) 

color  : 控制颜色, color='green'

linestyle : 线条风格, linestyle='dashed'

marker  : 标记风格, marker='o'

markerfacecolor : 标记颜色, markerfacecolor='blue'

markersize : 标记尺寸, markersize=20

……


pyplot的中文显示

  • 方法一

pyplot并不默认支持中文显示,需要rcParams修改字体实现

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

matplotlib.rcParams['font.family']='SimHei'
plt.plot([3,1,4,5,2])
plt.ylabel("纵轴(值)")
plt.savefig('test',dpi=600)  #dpi分辨率,每英寸的点数
plt.show()

看图,坐标的右侧有了中文显示: 

 rcParams的属性

 中文字体的种类

rcParams['font.family']

 实例

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

matplotlib.rcParams['font.family']='STSong'
matplotlib.rcParams['font.size']=20

a = np.arange(0.0,5.0,0.02)

plt.xlabel("横轴:时间")
plt.ylabel("纵轴:振幅")
plt.plot(a,np.cos(2*np.pi*a),'r--')
plt.show()

效果图

  • 方法二

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

实例

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

a = np.arange(0.0,5.0,0.02)

plt.xlabel("横轴:时间", fontproperties="SimHei",fontsize=20)
plt.ylabel("纵轴:振幅", fontproperties="SimHei",fontsize=20)
plt.plot(a,np.cos(2*np.pi*a),'r--')

plt.show()

效果图


pyplot的文本显示

  • pyplot的文本显示函数

 实例1

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

a = np.arange(0.0,5.0,0.02)

plt.xlabel("横轴:时间", fontproperties="SimHei",fontsize=15,color='green')
plt.ylabel("纵轴:振幅", fontproperties="SimHei",fontsize=15)
plt.title(r'正弦波实例 $y=cos(2\pi x)$',fontproperties='SimHei',fontsize=25)
plt.text(2,1,r'$\mu=100$',fontsize=15)
plt.plot(a,np.cos(2*np.pi*a),'r--')

plt.axis([-1,6,-2,2])
plt.grid(True)
plt.show()

效果图1

 plt.annotate(s, xy=arrow_crd, xytext=text_crd, arrowprops=dict),我们将会用此函数打上箭头。

实例2

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

a = np.arange(0.0,5.0,0.02)

plt.xlabel("横轴:时间", fontproperties="SimHei",fontsize=15,color='green')
plt.ylabel("纵轴:振幅", fontproperties="SimHei",fontsize=15)
plt.title(r'正弦波实例 $y=cos(2\pi x)$',fontproperties='SimHei',fontsize=25)
plt.annotate(r'$\mu=100$', xy=(2,1), xytext=(3,1.5),
             arrowprops=dict(facecolor='black',shrink=0.1,width=2))
plt.plot(a,np.cos(2*np.pi*a),'r--')

plt.axis([-1,6,-2,2])
plt.grid(True)
plt.show()




效果图2


pyplot的子绘图区域

  • 复杂的绘图区域

  •  plt.subplot2grid()

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

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

plt.subplot2grid((3,3), (1,0), colspan=2)

 大家可以根据下面的代码与图相对应

plt.subplot2grid((3,3),(0,0),colspan=3)
plt.subplot2grid((3,3),(1,0),colspan=2)
plt.subplot2grid((3,3),(1,2),rowspan=2)
plt.subplot2grid((3,3),(2,0))
plt.subplot2grid((3,3),(2,1))
  •  GridSpec类

它是Matplotlib库中一个特殊的子区域选定和设计的类

import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec

gs=gridspec.GridSpec(3,3)  #设计三行三列的网格

ax1=plt.subplot(gs[0,:])  #横向上选中第0列,纵向上全选
ax2=plt.subplot(gs[1,:-1])
ax3=plt.subplot(gs[1:,-1])
ax4=plt.subplot(gs[2,0])
ax5=plt.subplot(gs[2,1])

它的设计同上网格是一样的。


本单元总结

按照我的计划,是将数据分析的入门做八个单元,现在完成了一半了,后面我会不定期的更新数据分析的实战项目,从做项目中又能巩固我的知识,目前我正在看李航的《统计学习方法》,反正也是慢慢学,我准备后面还是找找网课看看。其次呢,我还打算把之前学的不是很清楚的爬虫专栏做起来。但主体的这一学期是准备学习机器学习的理论知识、备考英语四级、学习C++准备参加竞赛。

好了,总结完毕!虽然每次章末总结,我却比一定会总结,但说实话,我是为了我自己学习而写的博客,如果能得到大家的认可,我也很高兴!希望你们不要嫌我话多。

OK!如果你是从第一单元看过来的,祝你有所收获;否则,我会在下一单元中看见你。

猜你喜欢

转载自blog.csdn.net/m0_62919535/article/details/127058401
今日推荐