本文共 7045 字,大约阅读时间需要 23 分钟。
数据的快速生成
arange函数进行采样实现:
import numpy as npp=np.arange(0,1,0.1) #arange函数需要三个参数,分别为起始点、终止点、采样间隔。if __name__ == '__main__': print(p)
输出结果:
实现:
import numpy as npp=np.arange(0,5.6) #arange函数需要三个参数,分别为起始点、终止点、采样间隔。#采样间隔默认值为1if __name__ == '__main__': print(p)
输出结果:
linspace函数进行采样
import numpy as npp=np.linspace(1,10,10) #linspace函数指定开始值、终止值和元素个数来创建一维数组if __name__ == '__main__': print(p)
输出结果:
import numpy as npp= np.linspace(1,10,endpoint=False) #linspace函数指定开始值、终止值和元素个数来创建一维数组#可以通过endpoint=True关键字指定是否包括终值,缺省设置是包括终值if __name__ == '__main__': print(p)
输出结果:
Numpy提供了大量函数,计算速度快
import numpy as npx=np.arange(0,np.pi/2,0.1) #arange函数三个参数,分别为起始点、终止点、采样间隔。y=np.sin(x) #把所有点的函数值,一次求得if __name__ == '__main__': print(y)
输出结果:
#step 1 引用import matplotlib.pyplot as pltimport numpy as np#step 2 准备数据x=np.arange(-np.pi,np.pi,0.1) #arange函数三个参数,分别为起始点、终止点、采样间隔。y=np.sin(x) #把所有点的函数值,一次求得#step 3 制图plt.plot(x,y,'b') #'b'代表使用蓝色画曲线#step 4 显示图形plt.show()
import matplotlib.pyplot as pltimport numpy as np#使用xlim(x1,x2)设定横轴坐标,ylin(y1,y2)设置纵轴坐标x=np.arange(-5,5,0.1) #arange函数需要三个参数,分别为起始点、终止点、采样间隔。y=x**2plt.xlim(-5,5) #设定横坐标范围plt.ylim(0,100) #设定纵坐标范围plt.xlabel("x") #横轴标识plt.ylabel("y=x*x") #纵轴标识plt.title("Plot y=x*x") #设定图形的标题plt.plot(x,y) #制图plt.show()
#特别指定坐标轴的刻度,制作更能表达深意的图形,xticks(yticks)方法实现了这个功能 import numpy as npfrom pylab import *x=np.linspace(-np.pi,np.pi,100)#linspace函数指定开始值、终止值和元素个数来创建一维数组cos=np.cos(x) #把所有点的函数值,一次求得xticks(np.linspace(-np.pi,np.pi,5)) #linspace函数指定开始值、终止值和元素个数来创建一维数组plot(x,cos,color='red',linewidth=2.0,linestyle='-') #制图,设置一些属性show()
#plot的label参数import numpy as npfrom pylab import *x=np.linspace(-np.pi,np.pi,100) #linspace函数指定开始值、终止值和元素个数来创建一维数组sin,cos=np.sin(x),np.cos(x) #把所有点的函数值,一次求得plot(x,sin,color='blue',linewidth=2.0,linestyle='-',label='sin') #制图,设置一些属性plot(x,cos,color='red',linewidth=2.0,linestyle='-',label='cos') #制图,设置一些属性legend(loc='upper left') #为每条折线添加图例show()
#饼图import numpy as npimport matplotlib.pyplot as pltdata = np.random.randint(1,11,5) #随机数生成模块plt.pie(data,explode=[0,0,0.2,0,0]) #explode的第三个参数为0.2,意味着对应饼块被拖出饼plt.show()
#散点图from pylab import *import numpy as npn=100x=np.random.normal(0,1,n) #随机数生成模块y=np.random.normal(0,1,n) #随机数生成模块scatter(x,y) #绘制散点图show()
#柱图+折线图import numpy as npimport matplotlib.pyplot as pltimport matplotlib as mplmpl.rcParams['font.family']='sans-serif' #自定义样式控制mpl.rcParams['font.sans-serif']=[u'SimHei'] #自定义样式控制data=np.random.randint(1,10,10) #随机数生成模块x=np.arange(len(data)) plt.plot(x,data,color='r') #制图,同时设置一些属性plt.bar(x,data,alpha=.5,color='b',width=0.2) #制柱形图,同时设置一些属性plt.show()
#子窗口制图import numpy as npimport matplotlib.pyplot as pltx=np.linspace(0,5,10) #linspace函数指定开始值、终止值和元素个数来创建一维数组y=x**2#subplot(numRows, numCols, plotNum)#图表的整个绘图区域被分成 numRows 行和 numCols 列#然后按照从左到右,从上到下的顺序对每个子区域进行编号,左上的子区域的编号为1plt.subplot(1,2,1) plt.plot(x,y,'r--') #制图,同时设置一些属性plt.subplot(1,2,2)plt.plot(y,x,'g*-') #制图,同时设置一些属性plt.show()
如何设定下图的参数?
答:#子窗口制图import numpy as npimport matplotlib.pyplot as pltx=np.linspace(0,5,10) #linspace函数指定开始值、终止值和元素个数来创建一维数组y=x**2#subplot(numRows, numCols, plotNum)#图表的整个绘图区域被分成 numRows 行和 numCols 列#然后按照从左到右,从上到下的顺序对每个子区域进行编号,左上的子区域的编号为1plt.subplot(2,1,1)plt.plot(x,y,'r--') #制图,同时设置一些属性plt.subplot(2,1,2)plt.plot(y,x,'g*-') #制图,同时设置一些属性plt.show()
指定图的大小和分辨率
指定图形的分辨率、大小和长宽比例(aspect ratio) 通过subplots函数中的figsize、dpi等参数实现 如创建一个800*600像素、100dpi(每英寸100点)分辨率的图形,可以使用如下语句import numpy as npimport matplotlib.pyplot as plt#linspace函数指定开始值、终止值和元素个数来创建一维数组x=np.linspace(0,5,10)y=x**2fig,axes=plt.subplots(figsize=(8,6),dpi=100) #绘制子图axes.plot(x,y,'r') #制图,同时设置一些属性axes.set_xlabel('x') #横轴标识axes.set_ylabel('y') #纵轴标识axes.set_title('title') #设置标题plt.show()
三维图
除了要引用matplotlib外, 还需要引用mpl_toolkits.mplot3d库 还需要在matplotlib的figure函数生成实例对象后,设置其制图模式为3dimport matplotlib.pyplot as pltfrom mpl_toolkits.mplot3d import Axes3Dfig=plt.figure() #创建自定义图像ax=fig.add_subplot(111,projection='3d') ##“111”表示“1×1网格,第一子图”X=[0,1,2,1.5] #设置X坐标Y=[0,4,4,1] #设置Y坐标Z=[0,2,0,0] #设置Z坐标ax.plot_trisurf(X,Y,Z) # Tri 的每一行都定义了三角形的一个面,其实现方式是对包含 X、Y 和 Z 顶点的向量或矩阵进行索引,以此来定义面。plt.show()
三维曲面plot_trisurf
import numpy as npimport matplotlib.pyplot as pltfrom mpl_toolkits.mplot3d import Axes3Dn_angles=36 #设置角度n_radii=8radii=np.linspace(0.125,1.0,n_radii) #linspace函数指定开始值、终止值和元素个数来创建一维数组#可以通过endpoint=True关键字指定是否包括终值,缺省设置是包括终值angles=np.linspace(0,2*np.pi,n_angles,endpoint=False)angles=np.repeat(angles[...,np.newaxis],n_radii,axis=1)#angles [...,np.newaxis] 将angles转置,将每个元素转化成一个列表x=np.append(0,(radii*np.cos(angles)).flatten())y=np.append(0,(radii*np.sin(angles)).flatten())#flatten作用是将矩阵的行之间首位相接连接成一个一维矩阵z=np.sin(-x*y) #把所有点的函数值,一次求得fig=plt.figure() #创建自定义图像ax=fig.gca(projection='3d') #进入3d图形制作模式ax.plot_trisurf(x,y,z,cmap=plt.get_cmap('rainbow'),linewidth=0.2)# Tri 的每一行都定义了三角形的一个面,其实现方式是对包含 X、Y 和 Z 顶点的向量或矩阵进行索引,以此来定义面。#同时可以设置线的颜色和线的宽度plt.show()
三维曲面plot_surface
import numpy as npimport matplotlib.pyplot as pltfrom mpl_toolkits.mplot3d import Axes3Dimport matplotlib.mlab as mlabdelta=0.025x=np.arange(-3.0,3.0,delta) #arange函数需要三个参数,分别为起始点、终止点、采样间隔。y=np.arange(-2.0,2.0,delta) #arange函数需要三个参数,分别为起始点、终止点、采样间隔。X,Y=np.meshgrid(x,y) #生成网格型数据Z1=mlab.bivariate_normal(X,Y,1.0,1.0,0.0,0.0)#产生双变量正态分布,四个整数分别为:x和y的方差,x和y的均值Z2=mlab.bivariate_normal(X,Y,1.5,0.5,1,1) #产生双变量正态分布,四个整数分别为:x和y的方差,x和y的均值#difference of GaussiansZ=10.0*(Z2-Z1)#使用默认色创建带标签轮廓图fig=plt.figure()ax=fig.gca(projection='3d') #进入3d图形制作模式ax.plot_surface(X,Y,Z,cmap=plt.get_cmap('rainbow'),linewidth=0.2) #绘制图案,设置颜色,设置线的宽度plt.show()
三维曲面plot_surface+scatter
import numpy as npimport matplotlib.pyplot as pltfrom mpl_toolkits.mplot3d import Axes3Dfrom random import seed,randomimport matplotlib.mlab as mlabfig=plt.figure() #创建自定义图像ax=fig.gca(projection='3d') #进入3d图形制作模式x_surf=np.arange(0,1,0.01) #产生x坐标y_surf=np.arange(0,1,0.01) #产生y坐标x_surf,y_surf=np.meshgrid(x_surf,y_surf) #产生网格z_surf=np.sqrt(x_surf+y_surf) #产生z坐标ax.plot_surface(x_surf,y_surf,z_surf) #画3d曲面n=100;seed(0) #随机种子,产生可重复的数据,既程序每次运行结果一样x=[random()for i in range(n)] #产生随机点y=[random()for i in range(n)] #产生随机点z=[random()for i in range(n)] #产生随机点ax.scatter(x,y,z) #画3d散点图ax.set_xlabel('x label'); #设置x标签ax.set_ylabel('y label'); #设置y标签ax.set_zlabel('z label'); #设置z标签plt.show()
为三维曲面绘制等高线
import numpy as npimport matplotlib.pyplot as pltfrom mpl_toolkits.mplot3d import Axes3Dimport matplotlib.mlab as mlabdelta=0.025x=np.arange(-3.0,3.0,delta) #arange函数需要三个参数,分别为起始点、终止点、采样间隔。y=np.arange(-2.0,2.0,delta) #arange函数需要三个参数,分别为起始点、终止点、采样间隔。X,Y=np.meshgrid(x,y) #生成网格型数据Z1=mlab.bivariate_normal(X,Y,1.0,1.0,0.0,0.0)#产生双变量正态分布,四个整数分别为:x和y的方差,x和y的均值Z2=mlab.bivariate_normal(X,Y,1.5,0.5,1,1) #产生双变量正态分布,四个整数分别为:x和y的方差,x和y的均值#difference of GaussiansZ=10.0*(Z2-Z1)#使用默认色创建带标签轮廓图fig=plt.figure()ax=fig.gca(projection='3d') #进入3d图形制作模式ax.plot_surface(X,Y,Z,cmap=plt.get_cmap('rainbow'),linewidth=0.2) #绘制图案,设置颜色,设置线的宽度#X,Y,Z准备完毕plt.figure()CS=plt.contour(X,Y,Z,10) #制作等高线,横砍10刀plt.clabel(CS,inline=1,fontsize=10) #inline控制画标签,移除标签下的线plt.title('Simplest default with labels')plt.show()
转载地址:http://axyki.baihongyu.com/