Matplotlib 是 Python 的绘图库,它能让使用者很轻松地将数据图形化,并且提供多样化的输出格式。
Matplotlib 可以用来绘制各种静态,动态,交互式的图表。
Matplotlib 是一个非常强大的 Python 画图工具,我们可以使用该工具将很多数据通过图表的形式更直观的呈现出来。
Matplotlib 可以绘制线图、散点图、等高线图、条形图、柱状图、3D 图形、甚至是图形动画等等。
Matplotlib 通常与 NumPy 和 SciPy(Scientific Python)一起使用, 这种组合广泛用于替代
MatLab,是一个强大的科学计算环境,有助于我们通过 Python 学习数据科学或者机器学习。
Pyplot 是 Matplotlib 的子库,提供了和 MATLAB 类似的绘图 API。
https://www.runoob.com/matplotlib/matplotlib-subplots.html
有两个功能:1.创建一个画图对象。2.使这个函数返回的画图对象成为当前活跃的,并且在show()的时候该画处于最上层。
figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True)
num:图像编号或名称,数字为编号 ,字符串为名称;
figsize:指定figure的宽和高,单位为英寸;
dpi参数指定绘图对象的分辨率,即每英寸多少个像素,缺省值为80(1英寸等于2.5cm);
facecolor:背景颜色;
frameon:是否显示边框。
figure()会使得最新调出来的那个窗口处于活跃状态,之后如果plot,都会在这个窗口上。
plt.figure() : 创建新窗口,新窗口编号按照之前窗口的序号继续。
plt.figure(2) : 如果编号为2的窗口已经存在,则现在编号2的从窗口处于活跃状态(在所有窗口里面最靠前,置于顶层)。
fig = plt.figure(num=1, figsize=(6, 5), facecolor='b', edgecolor='r', frameon=True)
plt.show()
先使用
fig=plt.figure()
定义画布fig
fig.add_subplot()
用来定义副画布
参数是一个三位数,比如fig.add_subplot(211)
,第一位表示上下分几块,第二位表示左右分几块,第三位表示该副画布的编号。
a=plt.figure()
a1=a.add_subplot(211)
a2=a.add_subplot(212)
画散点图
函数原型:matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None,vmin=None, vmax=None, alpha=None, linewidths=None,verts=None, edgecolors=None, hold=None, data=None,**kwargs)
参数作用如下:x, y位置。s大小。c颜色。marker形状。 norm:数据亮度,默认为no,范围为0-1,float数据。
vmin,vmax:亮度设置,默认为no,若norm实例已使用,该参数无效。alpha透明度,范围为0-1。linewidths:描边的宽度。edgecolors:描边颜色。markeredgewidth描边粗细
c颜色可以是:单一颜色,颜色序列,使用cmap映射到颜色的序列数,一个行为RGB的2-D数组
s大小的默认值是20,下面第一幅图这么大;s=1是下面第二幅图
清除当前图形。
t = np.linspace(0.0, 2.0, 201)
s = np.sin(2 * np.pi * t)
plt.ylabel('y-axis')
plt.xlabel('x-axis')
plt.plot(t, s)
plt.grid(True)
plt.show()
plt.clf()
plt.title('matplotlib.pyplot.clf Example')
plt.show()
坐标轴对象可以直接设置xlim,ylim,title,xlabel,ylabel。
还可以直接画图,ax.plot(), ax.scatter(),ax.grid(),ax.legend()
注意:figure对象是不可以直接画图的。即,fig没有以上方法。
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.set(xlim=[-1, 1], ylim=[-1, 1], title='简单示例',
ylabel='Y-Axis', xlabel='X-Axis')
matplotlib.pyplot.grid(b=None, which='major', axis='both', **kwargs)。
b:是否显示网格线。布尔值或None,可选参数。如果没有关键字参数,则b为True,如果b为None且没有关键字参数,相当于切换网格线的可见性。
which:网格线显示的尺度。字符串,可选参数,取值范围为{‘major’, ‘minor’, ‘both’},默认为’both’。'major’为主刻度、‘minor’为次刻度。
axis:选择网格线显示的轴。字符串,可选参数,取值范围为{‘both’, ‘x’, ‘y’},默认为’both’`。
**kwargs:Line2D线条对象属性。
l1,=plt.plot(x,y1,label='y1=2*x+1',linestyle='--') #设置函数标签和函数线的类型
l2,=plt.plot(x,y2,label='y2=x**2')
matplotlib.pyplot.legend(*args, **kwargs)
设置legend图例的方式有两种:
从图上看,可以理解为越靠左(越小,越接近0)的地方坐标被 “ 张开 ” 了;越靠右(越大)的地方坐标被 “挤压” 了。
ax.set_xlim(ax.get_xlim()[::-1])
解释:ax.get_xlim()返回二元组,就是坐标轴的范围(xmin.xmax)
ax.get_xlim()[::-1]将二元组倒序,[::-1]这种索引格式是将列表倒序。
link
1.画等高线。2.画决策边界。
1.下面的例子画一个抛物面的等高线。
x = np.arange(-5, 5, 1)
y = np.arange(-5, 5, 1)
xx, yy = np.meshgrid(x, y)
# 先看看meshgrid代表的是那些点
plt.scatter(xx, yy, s=10)
z = xx ** 2 + 2 * yy ** 2 # z是关于x,y变量的二元函数,是抛物面
plt.contour(xx, yy, z) # 画出这个抛物面函数的等高线,自然是一个个椭圆嵌套
plt.axis('square')
plt.show()
x = np.arange(-5, 6, 0.2)
y = np.arange(-1, 6, 0.2)
xx, yy = np.meshgrid(x, y)
z = yy > xx ** 2 # z的形状和x,y一致,元素是bool值,False和True的边界实际上就是决策边界
print(z)
plt.scatter(xx, yy, s=1)
plt.contour(x, y, z)
plt.show()
plt.contour()的filled版本
把上面的plt.contour()直接改成plt.contourf()
如果用了subplot, 则tile()是画当前子图的标题。
suptitle()是画整个大图的标题。
用于展示所有的图像。
注意:展示图像时程序会暂停执行。可以考虑使用savefig(‘文件路径’)解决这个问题。
注意:如果在plt.show()之后savefig()的话,保存的是一张白图,因为show()之后会创建一个新的空白窗口。
plt.hist(x, bins=None, range=None, density=None, weights=None, cumulative=False, bottom=None, histtype='bar', align='mid', orientation='vertical', rwidth=None, log=False, color=None, label=None, stacked=False, normed=None, *, data=None, **kwargs)
x: 作直方图所要用的数据,必须是一维数组;多维数组可以先进行扁平化再作图;必选参数;
bins: 直方图的柱数,即要分的组数,默认为10;
设置color=’ ', edgecolors=color
subplot(1,3,1)需要每次画子图前声明一下是哪张子图。比如左边就是画第一张
subplots():
fig, axes = plt.subplots(1, 2)
注意括号里只需要两个参数,返回的是fig,和所有的axes。要画子图需要索引第几个子图:
ax[0].plot()
感觉不是特别常用。
使用matplotlib库pyplot模块中的gray()函数将colormap设置为“gray”。
matplotlib.pyplot.matshow()函数用于在新的图形窗口中将数组表示为矩阵。左上角被设置为原点,行(数组的第一个维度)以水平形式显示。图形窗口的长宽比根据数组进行设置,避免了较短、较窄的图形。x轴的Tick标签放置在顶部。
plt.fill_between用颜色填充两条曲线之间的区域
plt.fill_between(x, y1, y2),其中x是横坐标,y1和y2是两条曲线,这个函数的作用是用颜色填充y1和y2这两条曲线之间的区域。
https://blog.csdn.net/weixin_38314865/article/details/104504485