需要完整文件和PPT请点赞关注收藏后评论区留言私信~~~
Matplotlib是Python的一套基于NumPy的绘图工具包。Matplotlib提供了一整套在Python下实现的类 Matlab的纯 Python的第三方库,其风格跟 Matlab相似,同时也继承了Python简单明了的优点。
在Jupyter Notebook中导入语句如下% matplotlib notebook
import matplotlib.pyplot as plt
1.创建画布与子图
Matplotlib所绘制的图位于图片(Figure)对象中,绘图常用方法见表.
代码如下
import matplotlib.pyplot as plt fig = plt.figure() #不能使用空白的figure绘图,需要创建子图 ax1 = fig.add_subplot(1,2,1) ax2 = fig.add_subplot(1,2,2) ax1.plot([1.5,2,3.5,-1,1.6])
创建子图调整子图周围的间距。
fig,axes = plt.subplots(2,2,sharex = True,sharey = True) for i in range(2): for j in range(2): axes[i,j].hist(np.random.randn(500),bins =50,color='k',alpha= 0.5) plt.subplots_adjust(wspace=0,hspace=0)
2.添加画布内容
在画布上绘制图形,需要设置绘图的一些属性,如标题、轴标签等。
data = np.arange(0,np.pi*2,0.01) fig1 = plt.figure(figsize = (9,7),dpi = 90) #确定画布大小 ax1 = fig1.add_subplot(1,2,1) #绘制第1幅子图 plt.title('lines example') plt.xlabel('X') plt.ylabel('Y') plt.xlim(0,1) plt.ylim(0,1) plt.xticks([0,0.2,0.4,0.6,0.8,1]) plt.yticks([0,0.2,0.4,0.6,0.8,1]) plt.plot(data,data**2) plt.plot(data,data**3) plt.legend(['y = x^2','y = x^3']) ax1 = fig1.add_subplot(1,2,2) #绘制第2幅子图 plt.title('sin/cos') plt.xlabel('X') plt.ylabel('Y') plt.xlim(0,np.pi*2) plt.ylim(-1,1) plt.xticks([0,np.pi/2,np.pi,np.pi*3/2,np.pi*2]) plt.yticks([-1,-0.5,0,0.5,1]) plt.plot(data,np.sin(data)) plt.plot(data,np.cos(data)) plt.legend(['sin','cos']) plt.show()
3. 绘图的保存与显示
4.设置pyplot的动态rc参数
Matplotlib配置了配色方案和默认设置,主要用来准备用于发布的图片。有两种方式可以设置参数,即全局参数定制和rc设置方法。
查看matplotlib的rc参数: import matplotlib as plt print(plt.rc_params())
1. 全局参数定制 Matplotlib的全局参数可以通过编辑其配置文件设置。
2. rc参数设置 使用Python编程进行配置修改rc参数
rc参数设置示例
import matplotlib.pyplot as plt fig = plt.figure() ax = fig.add_subplot(1,1,1) np.random.seed(719) ax.plot(np.random.randn(30).cumsum(),color = 'k',linestyle = 'dashed',marker = 'o',label = 'one') ax.plot(np.random.randn(30).cumsum(),color = 'k',linestyle = 'dashed',marker = '+',label = 'two') ax.legend(loc = 'best')
可以用set_xticks设置刻度,用set_xticklabels改变刻度,设置刻度的旋转角度及字体等,如ax.set_xticklabels(['x1','x2','x3','x4','x5'],rotation = 30,fontsize = 'large')。
文本注解 绘图时有时需要在图表中加文本注解,Python通过text函数在指定的位置(x,y)加入文本注解,也可以利用annotate()完成指向型注释。
文本注解
绘图时有时需要在图表中加文本注解,Python通过text函数在指定的位置(x,y)加入文本注解,也可以利用annotate()完成指向型注释
绘制曲线图并标注
import matplotlib.pyplot as plt import numpy as np fig=plt.figure() ax1=fig.add_subplot(121) t=np.arange(0.0,5,0.01) s=np.cos(2*np.pi*t) line,=ax1.plot(t,s,lw=2) bbox=dict(boxstyle='round',fc='white') ax1.annotate('local max',xy=(2,1),xytext=(3,1.5),arrowprops=dict (facecolor='black',edgecolor='red',headwidth=7,width=2),bbox=bbox) bbox_prop=dict(fc='white') ax1.set_xlabel('asix-X',bbox=bbox_prop) ax1.set_ylim(-2,2) ax1.text(1,1,'max') ax2=fig.add_subplot(122) ax2.set_ylim(-4,4) ax2.set_xlim(-4,4) bbox=dict(boxstyle='round',ec='red',fc='white') ax2.text(-2,0,'$y=sin(x)$',bbox=bbox) ax2.text(0,-2,'$y=cos(x)$',bbox=dict(boxstyle='square',facecolor='white',ec='black'),rotation=45) ax2.grid(ls=":",color='gray',alpha=0.5) #设置水印(带方框的水印) ax2.text(-2,2,'NWNU',fontsize=20,alpha=0.8,color='gray',bbox=dict(fc="white",boxstyle='round',edgecolor='gray',alpha=0.3)) plt.show()
5.pyplot中的常用绘图
1. 折线图
折线图(Line Chart)是一种将数据点按照顺序连接起来的图形。matplotlib.pyplot.plot(*args, **kwargs)
折线图绘制代码如下
x1 = np.arange(0, 30) plt.plot(x1,x1*2,marker='o',color='g') plt.plot(x1,x1*3.5,marker='+',color='b') plt.tick_params(axis='x',labelsize=14,rotation=30) plt.tick_params(axis='y',labelsize=13) plt.show()
2. 散点图
散点图(Scatter Diagram)又称为散点分布图,是以一个特征为横坐标,另一个特征为纵坐标,利用坐标点(散点)的分布形态反映特征间的统计关系的一种图形。
scatter方法格式: matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, alpha=None, **kwargs)
fig,ax = plt.subplots() plt.rcParams['font.family'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False x1 = np.arange(1,30) y1 = np.sin(x1) ax1 = plt.subplot(1,1,1) plt.title('散点图') plt.xlabel('X') plt.ylabel('Y') lvalue = x1 ax1.scatter(x1,y1,c = 'r',s = 100,linewidths = lvalue,marker = 'o') plt.legend('x1') plt.show()
3.直方图
直方图(Histogram)又称质量分布图,是统计报告图的一种,由一系列高度不等的纵向条纹或线段表示数据分布的情况,一般用横轴表示数据所属类别,纵轴表示数量或者占比。
绘制直方图函数bar格式: matplotlib.pyplot.bar(left,height,width = 0.8,bottom = None,hold = None,data = None,** kwargs )
fig,ax = plt.subplots() plt.rcParams['font.family'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False x = np.arange(1,6) Y1 = np.random.uniform(1.5,1.0,5) Y2 = np.random.uniform(1.5,1.0,5) plt.bar(x,Y1,width = 0.35,facecolor = 'lightskyblue',edgecolor = 'white') plt.bar(x+0.35,Y2,width = 0.35,facecolor = 'yellowgreen',edgecolor = 'white') plt.show()
4. 饼图
饼图(Pie Graph)是将各项的大小与各项总和的比例显示在一张“饼”中,以“饼”的大小来确定每一项的占比。
绘制饼图pie方法格式: matplotlib.pyplot.pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6,shadow=False,labeldistance=1.1, startangle=None, radius=None, …
plt.figure(figsize = (6,6)) ax = plt.axes([0.1,0.1,0.8,0.8]) labels = 'Springs','Summer','Autumn','Winter' x = [15,30,45,10] explode = (0.05,0.05,0.05,0.05) #控制分离的距离,默认饼图不分离 plt.pie(x,labels = labels,explode = explode,startangle = 60,autopct = '%1.1f%%') #qutopct在图中显示比例值,注意值的格式 plt.title('Rany days by season') plt.tick_params(labelsize = 12) plt.show()
5. 箱线图
箱线图(Boxplot)也称箱须图,其绘制需使用常用的统计量,能提供有关数据位置和分散情况的关键信息,尤其在比较不同特征时,更可表现其分散程度差异。
matplotlib.pyplot.boxplot(x, notch=None, sym=None, vert=None, whis=None, positions=None, widths=None, patch_artist=None,meanline=None, labels=None, … )
np.random.seed(2) #设置随机种子 df = pd.DataFrame(np.random.rand(5,4), columns = ['A', 'B', 'C', 'D']) #生成0-1之间的5*4维度数据并存入4列DataFrame中 plt.boxplot(df) plt.show()
6. 概率图
概率图模型是图灵奖获得者Pearl提出的用来表示变量间概率依赖关系的理论。正态分布又名高斯分布。正态概率密度函数normpdf(x,mu,sigma),其中,x为向量,mu为均值,sigma为标准差。
from scipy.stats import norm fig,ax = plt.subplots() plt.rcParams['font.family'] = ['SimHei'] np.random.seed(1587554) mu = 100 sigma = 15 x = mu+sigma*np.random.randn(437) num_bins = 50 n,bins,patches = ax.hist(x,num_bins,density = 1) y=norm.pdf(bins,mu,sigma) ax.plot(bins,y,'--') fig.tight_layout() plt.show()
创作不易 觉得有帮助请点赞关注收藏~~~