【python新手入门】Matplotlib库学习笔记(2)

目录

  • 1 简单图绘制与设置
    • 1.1 模块导入与函数说明
    • 1.2 绘图设置
      • 1.2.1 plt.figure()设置图形窗口
      • 1.2.2 plt.xlim()设置图片边界
      • 1.2.3 plt.axis()设置坐标轴范围
      • 1.2.4 plt.grid()设置网格
      • 1.2.5 plt.xticks()设置坐标轴刻度标记
      • 1.2.6 文本标注
        • plt.title() 标题
        • plt.xlabel() 坐标轴标题
        • plt.legend() 图例
        • plt.text() 注释
      • 1.2.7 绘制参考线/区域
      • 1.2.8 移动坐标轴
  • 2 多子图绘制
      • plt.subplot() 创建子图
      • plt.subplots() 统一设置
      • fig.add_subplot()
      • plt.axes()
  • 3 统计图形绘制
    • 3.1 散点图plt.scatter()
    • 3.2 条形图plt.bar/plt.barh()
    • 3.3 饼图plt.pie
    • 3.4 直方图plt.hist
    • 3.5 箱型图plt.boxplot
  • 4 三维图图形绘制
    • 4.1 三维曲线图
    • 4.2 三维曲面图
    • 4.3 等高线图

1 简单图绘制与设置

1.1 模块导入与函数说明

模块导入

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 箱型图

1.2 绘图设置

函数 描述
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() 添加参考区域

1.2.1 plt.figure()设置图形窗口

figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None,…)

  • num:图形窗口序号
  • figsize:图形窗口的大小
  • num:图形窗口的序号
  • figsize: 图形窗口的大小,用元组指定
  • dpi:每英寸的点数
  • facecolor:图形窗口背景色
  • edgecolor:边框色
  • ……

1.2.2 plt.xlim()设置图片边界

设置图形与(坐标轴)边框的距离

1.2.3 plt.axis()设置坐标轴范围

plt.axis()`返回当前坐标轴的范围
plt.axis([xmin, xmax, ymin, ymax]) #用于设置当前坐标轴范围
plt.axis('off')  #不显示坐标轴及坐标轴标签
plt.axis('equal')  #设置不同坐标轴的单位长度相同
plt.axis('tight')  #改变坐标轴的范围,使数据能全部显示,并居中
plt.axis('square')  #设置坐标轴的取值宽度相等,单位长度相同,绘图区域为正方形

1.2.4 plt.grid()设置网格

plt.grid(b=None, which=‘major’, axis=‘both’, **kwargs)

  • b 取布尔值,用于绘图区域显示或不显示网格
  • 若b为空,且len(kwargs)==0,则plt.grid()用于切换网格的显示状态
  • which可取major或minor,显示稀疏或细密的网格
  • axis可取both,x或y,控制显示哪些网格线
  • kwargs以关键字参数的方式控制网格线的特性,如ax.grid(color='r', linestyle='-', linewidth=2)

1.2.5 plt.xticks()设置坐标轴刻度标记

1.2.6 文本标注

【python新手入门】Matplotlib库学习笔记(2)_第1张图片
代码如下:

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()

plt.title() 标题

plt.xlabel() 坐标轴标题

plt.legend() 图例

plt.text() 注释

1.2.7 绘制参考线/区域

1.2.8 移动坐标轴

2 多子图绘制

plt.subplot() 创建子图

plt.subplots() 统一设置

【练习】在一个图形窗口中使用不同的方法绘制4个子图,自己定义子图的图形函数。

【求解】:
【python新手入门】Matplotlib库学习笔记(2)_第2张图片
代码如下:

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()

fig.add_subplot()

plt.axes()

plt.axes((left, bottom, width, height))用于添加一个坐标系对象到当前图像窗口中,(left, bottom, width, height)为图形窗口中的相对位置,取值在[0,1]上。

3 统计图形绘制

3.1 散点图plt.scatter()

使用格式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)

【python新手入门】Matplotlib库学习笔记(2)_第3张图片

3.2 条形图plt.bar/plt.barh()

使用格式:plt.bar(x, height, width, bottom, ...), plt.barh(x, height, width, bottom, ...)

bar和barh分别绘制竖直条形图和水平条形图。
x为array类型,用于表示条的横坐标;
height为array类型,表示条的高度;
width为0-1之间的实数,表示条的宽度;
bottom表示条的基线高度。

3.3 饼图plt.pie

使用格式:plt.pie(x, explode=None, labels=None, autopct=None, ...)

这里x接收array,表示用于绘制扇形的数据;
explode接收array,表示对应扇形离饼图圆心为n个半径;
labels接收array,指定每一项的名称;
autopct接收特定的string,指定数值的显示方式。

3.4 直方图plt.hist

使用格式: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时,绘制累积直方图。

3.5 箱型图plt.boxplot

使用格式: 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表示箱线图的标签。

4 三维图图形绘制

4.1 三维曲线图

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+1 sin(2πz),y=z2+1 cos(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()

【python新手入门】Matplotlib库学习笔记(2)_第4张图片

4.2 三维曲面图

创建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)产生。

4.3 等高线图

用Axes3D对象ax的contour()contourfcontour3D方法可以绘制等高线图。

所有代码均为jupyter python3代码调试
这里辰月渣渣,有错误欢迎纠正

你可能感兴趣的:(python,python)