模块导入
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
函数说明
函数 | 说明 |
---|---|
plt.plot() | 绘制线性二维图,散点图 |
plt.sactter() | 绘制散点图 |
plt.bar() | 条形图 |
plt.pie() | 饼图 |
plt.hist() | 直方图 |
plt.boxplot | 箱型图 |
函数 | 描述 |
---|---|
plt.figure() | 创建并设置图形窗口 |
plt.xlim(), plt.ylim() | 图形与边框之间的距离 |
plt.grid() | 设置(添加)网格线 |
plt.axis() | 设置坐标轴范围 |
plt.xticks(), plt.yticks() | 设置坐标轴的刻度标记 |
plt.title() | 设置标题 |
plt.xlabel(), plt.ylabel() | 坐标轴标注 |
plt.legend() | 添加图例 |
plt.text() | 添加文字注释 |
plt.axhline(), plt.hlines() | 添加参考线 |
plt.axvline(), plt.vlines() | 添加参考线 |
plt.axhspan(), plt.axvspan() | 添加参考区域 |
figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None,…)
设置图形与(坐标轴)边框的距离
plt.axis()`返回当前坐标轴的范围
plt.axis([xmin, xmax, ymin, ymax]) #用于设置当前坐标轴范围
plt.axis('off') #不显示坐标轴及坐标轴标签
plt.axis('equal') #设置不同坐标轴的单位长度相同
plt.axis('tight') #改变坐标轴的范围,使数据能全部显示,并居中
plt.axis('square') #设置坐标轴的取值宽度相等,单位长度相同,绘图区域为正方形
plt.grid(b=None, which=‘major’, axis=‘both’, **kwargs)
ax.grid(color='r', linestyle='-', linewidth=2)
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-2*np.pi,2*np.pi,101)
y=np.sin(x)
plt.plot(x,y)
#显示中文设置
plt.rcParams['font.sans-serif'] = 'SimHei' # 设置中文字体(SimHei为简体黑体)
plt.rcParams['axes.unicode_minus'] = False # 设置正常显示负号
#标签、图例、注释等设置
plt.title("sin曲线图")
plt.xlabel('x')
plt.ylabel('y')
plt.legend(['sin(x)轴'])
plt.text(0,0,"y=sin(x)",fontsize=14)
plt.show()
【练习】在一个图形窗口中使用不同的方法绘制4个子图,自己定义子图的图形函数。
import numpy as np
import matplotlib.pyplot as plt
x,p=plt.subplots(2,2)
p1=p[0,0]
p2=p[0,1]
p3=p[1,0]
p4=p[1,1]
x=np.linspace(0,10,100)
y=x**2
p1.plot(x,x)
p2.plot(x,y)
p3.plot(x,x**3)
p4.plot(x,x**4)
plt.show()
plt.axes((left, bottom, width, height))
用于添加一个坐标系对象到当前图像窗口中,(left, bottom, width, height)
为图形窗口中的相对位置,取值在[0,1]上。
使用格式:plt.scatter(x, y, s=None, c=None, marker=None, ...)
x, y 是散点的横坐标、纵坐标;
s是标量或数组,表示散点的大小;
c表示颜色;
marker表示点的形状,默认为’o’,还有一些其他的可调参数。
示例
import numpy as np
import matplotlib.pyplot as plt
#建立点集
x=np.random.normal(0,1,1000)
y=np.random.normal(0,1,1000)
t=np.arctan2(x,y)##转化为度数
#绘图
plt.scatter(x,y,c=t)
使用格式:plt.bar(x, height, width, bottom, ...)
, plt.barh(x, height, width, bottom, ...)
bar和barh分别绘制竖直条形图和水平条形图。
x为array类型,用于表示条的横坐标;
height为array类型,表示条的高度;
width为0-1之间的实数,表示条的宽度;
bottom表示条的基线高度。
使用格式:plt.pie(x, explode=None, labels=None, autopct=None, ...)
这里x接收array,表示用于绘制扇形的数据;
explode接收array,表示对应扇形离饼图圆心为n个半径;
labels接收array,指定每一项的名称;
autopct接收特定的string,指定数值的显示方式。
使用格式:plt.hist(x, bins=None, range=None, density=None, cumulative=False, ...)
plt.hist用于绘制变量x的直方图。
这里x是数组或数组序列;
bins接收整数,序列或字符串,用于指定条的数目;
range接收元组,用于指定各条的上下限,当bins是序列时,range失效;density接收逻辑值True或False,默认为False,当指定为True时,绘制的是概率密度直方图,其条形的总面积为1;
cumulative接收布尔值True或False,默认为False,当指定为True时,绘制累积直方图。
使用格式: plt.boxplot(x, notch=None, sym=None, vert=None, whis=None, labels=None...)
x接收array,表示用于绘制箱线图的数据;
notch接收布尔值True或False,表示中间箱体是否有缺口,默认为False;
sym接收特定字符串,指定异常点形状,默认为’b+‘,如果sym=’',则不显示异常点;
vert接收布尔值,True表示图形为纵向,False为横向,默认为True;
whis接收实数、序列或字符串,用于指定异常值的取值界限whisker,默认为1.5;
labels表示箱线图的标签。
fig = plt.figure(figsize=(8,6))#创建图形
ax = fig.gca(projection='3d')#创建三维坐标系
再使用ax.plot(x,y,z)直接绘制三维线图
ax.set_box_aspect((np.ptp(x), np.ptp(y), np.ptp(z)))
#三维图中平衡坐标刻度
#二维图中的axis('equal')
【练习】绘制曲线
x = z 2 + 1 sin ( 2 π z ) , y = z 2 + 1 cos ( 2 π z ) , z ∈ [ − 2 , 2 ] x=\sqrt{z^2+1}\sin(2\pi z), y=\sqrt{z^2+1}\cos(2\pi z), z\in[-2,2] x=z2+1sin(2πz),y=z2+1cos(2πz),z∈[−2,2]的图形。
【求解】
import numpy as np
import matplotlib.pyplot as plt
#数据点
z=np.linspace(-2,2,100,endpoint=True)
x=np.sqrt((z**2)+1)*np.sin(2*np.pi*z)
y=np.sqrt(x**2+1)*np.cos(2*np.pi*z)
#绘图
p=plt.figure(figsize=(7,7))
ax=p.gca(projection='3d')
ax.plot(z,x,y)
plt.show()
创建3D类型的坐标系ax
后,用ax.plot_wireframe(X,Y,Z)
绘制网格图或ax.plot_surface(X,Y,Z)
绘制表面图,这里 X , Y , Z X,Y,Z X,Y,Z是同样大小的二维数组。
设曲面的表达式为 Z = F ( X , Y ) Z = F(X,Y) Z=F(X,Y),则 X , Y X, Y X,Y可用numpy.meshgrid()
函数产生, Z Z Z由表达式 F ( X , Y ) F(X, Y) F(X,Y)产生。
用Axes3D对象ax的contour()
或contourf
或contour3D
方法可以绘制等高线图。
所有代码均为jupyter python3代码调试
这里辰月渣渣,有错误欢迎纠正