自学内容网 自学内容网

Python-Matplotlib库的使用

Pyplot是Matplotlib的子库,是常用的绘图模块,它提供了和MATLAB类似的绘图API.

Matplotlib绘图有两种方法,即函数式绘图(plt.xx)和对象式编程(flg,ax=plt.subplots()),本小节来学习函数式绘图的形式。

plt.figure()函数

plt.figure() 函数的作用是定义一个画布,可以设置画布的大小,分辨率等。在画布上绘制图形,该函数也可以不写,不写该函数,系统会提供一个默认的画布。

语法格式:figure(num=None,figsize,dpi,facecolor,edgecolor,frameon=True)

参数说明:

num:表示图像编号或名称,数字为编号,字符串为名称;

figsize:用来指定figure的宽和高,单位为英寸

dpi:用来指定绘画对象的分辨率,即每英寸多少个像素,缺省值为80(其中,1英寸=2.5)

facecolor:表示背景的颜色,可选,缺省值为None

frameon:表示是否显示边框

plt.plot()函数

plot()函数是绘制二维图形的最基本函数。plot()可以绘制点和线,语法格式如下:

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

参数说明:

(1)x:  x轴数据,列表或数组,可选

(2)y:  y轴数据,列表或数组

(3)format__string:可选。其由颜色字符、风格字符和字符组成,包括:

ls:  表示折线风格,' - '表示实线,' - -  '表示破折线,' -. '点划线,':  '表示虚线等

lw:表示线条宽度

color或c:表示颜色,如:c='b'表示蓝色,c='m'表示洋红色,c='#008000'是用RGB值表示某种颜色等

maker:线条上标记的形状,如:' . '表示用点标记,'  ,  '表示像素标记(极小点),'o'表示实心圆标记,'v'表示倒三角等

makersize:线条上标记的大小

makeredgecolor:标记的边框色

makerfacecolor:标记的填充色

label:文本标签

(4)**kwargs:其他参数,可选

plt.show()函数

show()函数将在屏幕上生成一个交互式绘图,即显示plot绘制的图形

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5, 6, 7]
y = [2, 5, 8, 4, 12, 6, 9]

plt.figure('Matplotlib练习图', figsize=(6, 4), dpi=80, edgecolor='white', frameon=True)  # 调整figsize大小并提前调用
plt.plot(x, y, lw=2, ls=':', c='red', marker='o', markersize=2, markeredgecolor='blue', markerfacecolor='green')

plt.show()

设置坐标轴刻度及范围

(1)plt.xlabel()和plt.ylabel()

plt.xlabel函数用于设置x轴坐标轴、字体大小及类型

plt.ylabel函数用于设置y轴坐标轴、字体大小及类型

(2)plt.title()和plt.legend()

plt.title()用来设置图表标题;plt.legend()用来给图增加图例。

legend()函数有参数,loc='best'/'upper right'/'right'/'center left'表示图例位置,fontsize表示字体大小

(3)plt.xlim()和plt.ylim()

分别用于设置显示x,y轴的显示范围

(4)plt.axis()函数

plt.axis([a,b,c,d])的功能是设置x轴的范围为[a,b],y轴的的范围为[c,d]

(5)plt.fill_ between()函数      plt.fill_ between(x1,x2,y)

功能:用颜色补充两条曲线之间的区域

可选参数facecoler表示覆盖区域的颜色,alpha表示覆盖区域的透明度,取值范围为[0,1],其值越大表示越不透明

import numpy as np
import matplotlib.pyplot as plt

x=np.linspace(0,5,100)
y=np.cos(2*np.pi*x)*np.exp(-x/2)+1
plt.axis([np.min(x),np.max(x),0,max(y)])
plt.plot(x,y)
font1={'family':'Arial','size':20}
plt.xlabel('x_label',font=font1)
plt.ylabel('y_label')
plt.title("$cos(2*np.pi*x)*np.exp(-x/2)+1$")
plt.fill_between(x,y1=y,y2=0,where=(x>=0.7)&(x<=4.5),facecolor='blue',alpha=0.3)
plt.show()
import matplotlib.pyplot as plt
def func1(x):
    return x**2-2*x
def func2(x):
    return x**3-2*x**2-3*x+5
x=4.0
recordX=[]
recordY1=[]
recordY2=[]
for i in range(20):
    y1=func1(x)
    y2=func2(x)
    recordX.append(x)
    recordY1.append(y1)
    recordY2.append(y2)
    x-=0.5
plt.plot(recordX,recordY1,marker='*',markersize=10,color='blue')
plt.plot(recordX,recordY2,marker='o',color='red')
font1={'family':'Arial','weight':'normal','size':30}
font2={'family':'Times New Roman','weight':'normal','size':30}
plt.xlabel('xValue',fontdict=font1)
plt.ylabel('yValue',fontdict=font2)
plt.title('Equation_ Curve',font2)
plt.legend(['Quadratic Equation','Multiple Equation'],loc='center left',fontsize=14)
plt.xlim((-2,4))
plt.ylim((-1,7))

plt.show()
import numpy as np
import matplotlib.pyplot as plt

def pdf(x,mu,sigma):
    return 1/(sigma*np.sqrt(2*np.pi))*np.exp(-(x-mu)**2/(2*sigma**2))
x=np.linspace(-5,5)
y_1=pdf(x,0,0.5)
y_2=pdf(x,0,1.0)
y_3=pdf(x,0,2.0)
plt.plot(x,y_1,label='&:0.5',linestyle='dashed',color='b')
plt.plot(x,y_2,label='&:1.0',linestyle='solid',color='m')

plt.plot(x,y_3,label="&:2.0",linestyle='dashdot',color='r')


plt.legend(['picture','safad','affd'],fontsize=20)
font1={'family':'Arial'}
plt.xlabel('x_value',font=font1,size=20)
plt.ylabel('y_value',size=20)


plt.title("正太分布曲线图")
plt.grid()
plt.show()


绘制柱状图、饼图、散点图

散点图

使用plt.scatter()方法来绘制散点图,语法格式如下:

matplotlib.pylot.scatter(x,y,s,c,maker,alpha,linewidths,edgecolors**kwargs)

参数说明如下:

(1)x,y:长度相同的数组,绘制散点图的数据点

(2)s:点的大小,默认20,也可以是个数组,数组每个参数的为对应点的大小

(3)color或c:表示点的颜色,默认值是蓝色('b'),也可以是个RGB或RGBA二维行数组

(4)maker:表示点的样式,默认为小圆圈'o'

(5)alpha:表示点的透明度

(6)linewidths:用来设置散点边界的宽度

(7)edgecolors:用来设置散点边界的颜色

**kwargs:其他参数

import matplotlib.pyplot as plt
import numpy as np

x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
y = np.array([1, 4, 9, 16, 7, 11, 23, 18])
color1 = ['beige', 'cyan', 'g', 'b', 'pink', 'purple', 'orange', 'grey']
sizes=np.array([i*10 for i in y])
plt.title('SCATTER')
font1={'family':'Arial'}
plt.xlabel('X_Value',font=font1)
plt.ylabel('Y_value',font=font1)
plt.xticks(np.arange(1,10))
plt.yticks(np.arange(min(y)-1,max(y)+1,5))
plt.scatter(x,y,s=sizes,c=color1,marker='*')
plt.show()

柱状图

使用plt.bar()函数来画柱状图,其语法格式如下:

matplotlib.pyplot.bar(x,y,width,color,edge,bottom,linewidth,align,**kwargs)

参数说明:

(1)x:表示x轴上的数值,浮点型

(2)y:表示y轴上的数值,表示柱状图的高度

(3)width:浮点型数组,用来表示柱状图的高度

(4)color:用来设置柱状图的填充色

(5)edge:用来表示柱状图的边框色

(6)bottom:表示百分百标签与圆心的距离

(7)linewidth:表示柱状图的边框宽度

(8)align:是柱状图对齐方式,'center'以x位置为中心,这是默认值

**kwargs:其他参数

import matplotlib.pyplot as plt
import numpy as np
x=np.array(["Value1","Value2","Value3","Value4"])
y=np.array([12,22,6,16])
plt.bar(x,y,width=0.8,color='green',edgecolor='blue',bottom=30,align='edge')
plt.show()

饼图

使用plt.pie()来绘制饼图,其语法格式如下:

plt.pie(x,explode,labels,colors,autopct,pctdisance,shadow,**kwargs)

参数说明如下:

(1)x:浮点型数组,表示每个扇形的面积

(2)explode:数组,用来表示各个扇形之间的间隔,默认值为0

(3)labels:列表,表示各个扇形的标签,默认值为none

(4)colors:数组,表示各个扇形的颜色,默认值为none

(5)autopct:用来表示百分比格式

(6)pctdisance:用来表示百分比标签与圆心的距离

(7)shadow:表示是否为饼状图添加阴影效果

import matplotlib.pyplot as plt
import numpy as np

labels=['tomato','Carrot','Patoto','Cabbage','notpepper']
x=[1800,1600,2400,800,2000]
colors=['blue','green','orange','yellow','red']
heardis=[0.1,0,0,0,0]
plt.pie(x,explode=heardis,colors=colors,labels=labels,autopct='%.2f%%')
plt.title('Vegetable')
plt.show()
plt.savefig('Vagetabel.jpg')

绘制多图

使用pyplot.subplot()函数或pyplot.subplots()函数来完成绘制多图

使用subpplot()函数的时候需要指明网络的行列数

使用fig=plt.figure()可以生成一个画布,在画布fig上使用ax=fig.add_ sudplot(a,b,c)就生成了一个子图ax,语句fig,ax=plt.subplots(a,b)就是同时生成了画布fig和一组子图ax,使用ax[x,y]来选择其中的一个子图

subplot()方法

格式1:subplot(m,n,index,**kwargs)

格式2:subplot(m n index)

subplot将整个画布分为m行n列,按照从左到右,从上到下的顺序为每一个子区域编号,用index来表示,左上的子区域编号为1

如果m、n和index这三个数都是小于10的数,也可以连写,即去掉中间的逗号

例如:subplot(3,2,2)或subplot表示画布被分隔为3行2列的自区域,现在在第二个子区域绘制

subplots()方法

语法格式如下:Matplotlib.pyplot.subplots(m,n,sharex,*,**kwargs)

参数:

(1)m:表示设置图表的行数,默认为1

(2)n:表示设置图表的列数,默认为1

(3)sharex、sharey:用来设置x,y轴是否为共享属性,默认为False,可设置为"None","all","row"或"col",False或None用来表示每个子图的x轴或y轴都是独立的;

True或all表示所有子图共享x轴或y轴,row设置每个子图行共享一个x轴或y轴,col设置每个子图图例共享一个x轴或y轴

import matplotlib.pyplot as plt
fig,(ax1,ax2)=plt.subplots(1,2)
x=[1,2,3,4,5]
y=[6,7,8,9,10]
ax1.plot(x,y)
ax2.scatter(x,y,c='r')
plt.show()

import matplotlib.pyplot as plt
import numpy as np


x=np.linspace(0,2*np.pi,100)
y1=np.sin(2*x)
y2=np.cos(x)

fig,(ax1,ax2)=plt.subplots(1,2)
ax1.plot(x,y1,c='r')
ax1.set_title("sin(2x)")

ax2.plot(x,y2,lw=5)
ax2.set_title("cos(x)")

plt.show()

add_ subplot()方法

add_ subplot()函数的格式及功能和subplots()函数类似

import numpy as np
import matplotlib.pyplot as plt

fig=plt.figure(figsize=(10,8))
x1=np.linspace(-5,5,50)
y1=x1**2+2*x1+0.5
x2=np.random.uniform(0,1,size=50)
y2=0.5+x2**2+np.random.normal(0,1,size=50)

ax1=fig.add_subplot(1,2,1)
ax1.plot(x1,y1)

ax2=fig.add_subplot(1,2,2)
ax2.scatter(x2,y2)
plt.show()

原文地址:https://blog.csdn.net/axzy5863/article/details/142467592

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!