1 二维图画

1.1 二维曲线

plot(x, y, ls="-", lw=1.5, label=None)
  • x, y:横坐标和纵坐标
  • ls:色彩、点符号、线型列表,如 ls=’r*-‘ 表明红色实线、*形点,ls=’g.’ 表明绿色散点
  • lw:线宽度
  • label:线标签
plot(x, y, color, marker, linestyle)
  • x, y:横坐标和纵坐标
  • color:色彩,取值:b(blue), g(green), r(red), c(cyan), m(magenta), y(yellow), k(black), w(white)
  • marker:符号形状,取值:. , o v ^ < > 1 2 3 4 s p * h H + x D d | _
  • linestyle:线型,取值:- — -. :
import numpy as np
import matplotlib.pyplot as plt
x=np.arange(0,12,0.3)
y1=np.sin(x)
y2=np.cos(x)
plt.figure()  #新建一个图画窗口
plt.rcParams['font.sans-serif']=['SimHei']  #正常显现标题中中文
plt.rcParams['axes.unicode_minus'] = False  #正常显现坐标轴中中文
plt.subplot(1,2,1)  #运用第1个窗格
plt.plot(x,y1,'r*-') #绘图
#plt.plot(x,y1,color='r',marker='*',linestyle='-') #和上面等价
plt.title("正弦曲线")  #标题
plt.xlabel('x轴')  #x轴命名
plt.ylabel('y轴')  #y轴命名
plt.grid()  #增加网格
plt.legend(['sinx'])  #显现图例
plt.subplot(1,2,2)  #运用第2个窗格
plt.plot(x,y1,'r*-',label='sinx')  #制作正弦图画
plt.plot(x,y2,'g.--',label='cosx')  #制作余弦图画
plt.title('正弦曲线、余弦曲线')  #标题
plt.legend()  #显现图例

python绘图总结

1.2 二维散点图

scatter(x, y, s=20, c='b', marker='o', cmap, alpha)
  • x, y:横坐标和纵坐标
  • s:点大小
  • c:点色彩,取值:b(blue), g(green), r(red), c(cyan), m(magenta), y(yellow), k(black), w(white)
  • marker:点符号,取值:. , o v ^ < > 1 2 3 4 s p * h H + x D d | _
  • cmap:色彩图谱
  • alpha:透明度,取值:0~1,超越1时当1算,低于1时当0算
  • linewidths:边框宽度
import numpy as np
import matplotlib.pyplot as plt
size=100 
x=np.random.uniform(size=size)
y=np.random.uniform(size=size)
s=np.random.uniform(5,400,size=size)  #点大小
c=np.random.uniform(size=size)  #点色彩
lw=np.random.uniform(1,4,size=size)  #边框宽度
plt.figure()  #新建一个图画窗口
plt.subplot(1,2,1)  #运用第1个窗格
plt.scatter(x,y,s=s,c=c,alpha=0.5,linewidths=lw,edgecolors='m')  #制作散点图
plt.subplot(1,2,2)  #运用第2个窗格
plt.scatter(x,y,s=s,c=c,cmap='rainbow',alpha=0.5)  #制作散点图

python绘图总结

cmap 为色彩图谱,取值如下: (见cmap设置色彩的参数)

python绘图总结

1.3 图画润饰

  • figure( num, figsize, dpi ):新建一个空白图画窗口,num为窗口名字,figsize为窗口尺寸,dpi为分辨率
  • title( ):标题
  • xlabel( ):x轴标签
  • ylabel( ):y轴标签
  • xlim( xmin, xmax ):x轴图画显现范围
  • ylim( ymin, ymax ):y轴图画显现范围
  • axis( xmin, xmax, ymin, ymax ):设置x轴和y轴显现范围
  • xticks( ticks, labels ):x轴刻度符号,ticks为需求符号的坐标,labels为对应ticks的标签
  • yticks( ):y轴刻度符号,ticks为需求符号的坐标,labels为对应ticks的标签
  • vlines( x, ymin, ymax, colors=’k’, linestyles=’solid’, label=” ):制作笔直分割线
  • hlines( y, xmin, xmax, colors=’k’, linestyles=’solid’, label=” ):制作水平分割线
  • text( x, y, s ):说明文字,(x,y)为文字显现方位,s为文字内容
  • subplot( rows, cols, num ):多窗格绘图,rows表明行数,cols表明列数,num表明窗格序号
  • legend( labels ):显现图例,labels为各曲线的图例标签列表,若在plot()中已给标签,这儿能够省掉参数
  • grid():显现网格
  • show( ):显现图画
  • savefig( name, dpi ):保存图片,默认以png格局保存,dpi为分辨率
  • gca( ):获取坐标轴(axis)目标

这儿仅介绍 xticks() 的用法:

import numpy as np
import matplotlib.pyplot as plt
x=np.arange(0,15.7,0.1)
y=np.sin(x)
plt.figure()  #新建一个图画窗口
plt.plot(x,y,'r.')  #绘图
ticks=np.arange(0,6)*np.pi
labels=['0','1','2','3','4','5']
plt.xticks(ticks,labels)  #x轴示数符号
plt.grid()  #显现网格

python绘图总结

1.4 坐标轴控制

1.4.1 坐标轴刻度距离

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.pyplot import MultipleLocator
x=np.arange(0,15.7,0.1)
y=np.sin(x)
plt.figure()  #新建一个图画窗口
plt.plot(x,y,'r.')  #绘图
ax=plt.gca()  #获取坐标轴(axis)目标
ax.xaxis.set_major_locator(MultipleLocator(3.14))  #设置x轴示数距离
plt.grid()  #显现网格

python绘图总结

能够看到,x 轴刻度为 3.14

1.4.2 坐标轴刻度格局

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.ticker import FormatStrFormatter
x=np.arange(0,15.7,0.1)
y=np.sin(x)
plt.figure()  #新建一个图画窗口
plt.plot(x,y,'r.')  #绘图
ax=plt.gca()  #获取坐标轴(axis)目标
ax.yaxis.set_major_formatter(FormatStrFormatter('%.1f'))  #设置y轴示数格局
plt.grid()

python绘图总结

能够看到,y 轴刻度只显现1位小数。此办法也能够防止坐标轴示数有时候主动变成+e**的情况发生

2 三维图画

2.1 三维坐标轴目标(Axes3D

在制作三维图画时,需求先创立三维坐标轴目标 Axes3D ,创立办法主要有以下2种:

办法一

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D  #尽管没有明确调用 Axes3D,也不能省掉,不然会报错
fig=plt.figure()  #创立一个图画窗口
ax=plt.axes(projection='3d')  #创立三维坐标轴目标

办法二

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig=plt.figure()  #创立一个图画窗口
ax=Axes3D(fig)  #创立三维坐标轴目标

运行代码,能够看到创立了一个空的三维图画窗口,如下:

python绘图总结

多窗格绘图

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D  #尽管没有明确调用 Axes3D,也不能省掉,不然会报错
fig=plt.figure()  #创立一个图画窗口
ax=fig.add_subplot(rows,cols,num,projection='3d')  #增加一个三维子图

2.2 三维曲线

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
t=np.linspace(0,20,70)  #参数,生成[0,20]之间70个点
x=np.sin(t)
y=np.cos(t)
z=2*t
fig=plt.figure()  #创立一个图画窗口
ax=Axes3D(fig)  #创立三维坐标轴目标
ax.plot(x,y,z,'r*-')  #制作3维曲线

python绘图总结

2.3 三维散点图

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
size=150  #点个数
x=np.random.randint(0,30,size)
y=np.random.randint(0,30,size)
z=np.random.randint(0,30,size)
fig=plt.figure()  #创立一个图画窗口
ax=Axes3D(fig)  #创立三维坐标轴目标
s=np.random.randint(0,200,size)  #点大小
c=np.random.randint(0,256,size)  #点色彩
ax.scatter(x,y,z,s=s,c=c,alpha=0.8)  #制作3维散点图

python绘图总结

2.4 三维曲面

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
x=np.linspace(0,10,50)
y=np.linspace(0,9,45)
X,Y=np.meshgrid(x,y)  #生成格点,并将所有格点的x轴值和y轴值别离保存到 X 和 Y 中,X 和 Y 的维度:(45,50)
Z=np.sin(X)+np.cos(Y)  #每个格点对应的函数值,维度:(45,50)
fig=plt.figure()  #创立一个图画窗口
ax=fig.add_subplot(1,2,1,projection='3d')  #增加一个三维子图
ax.plot_surface(X,Y,Z,cmap='hot')  #制作三维曲面,cmap为色彩图谱
ax=fig.add_subplot(1,2,2,projection='3d')  #增加一个三维子图
ax.plot_surface(X,Y,Z,cmap='rainbow')  #制作三维曲面,cmap为色彩图谱

python绘图总结

X,Y=np.meshgrid(x,y) 函数的作用是生成格点,并将所有格点的x轴值和y轴值别离保存到 X 和 Y 中,X 和 Y 的维度:(45,50) ,变量空间如下:

python绘图总结

​ 声明:本文转自python绘图总结