Python学习笔记之matplotlib绘图

时间:2022-12-27 08:15:44

使用pip安装matplotlib:

pip install matplotlib

导入模块并起别名plt:

import matplotlib.pyplot as plt

1、使用 figure() 函数创建画布

plt.figure(name)    # 传入字符串可为画布命名

2、使用 subplot() 函数在画布创建子图

plt.subplot(2, 1, 1)    # 创建2*1的子图,当前是第1个子图
#绘图1
plt.subplot(2, 1, 2)    # 当前在第2个子图,前两个参数和创建时一样
#绘图2

3、使用 plot() 函数画函数图像

plt.plot(x, y)    # x是一定范围内离散的数(点),y是x的函数值
plt.plot(x, y1, x, y2)   # 在同一坐标轴绘制多个函数图像

4、使用 show() 函数弹窗显示画布

plt.show()

样式:

plt.style.use()    # 传入'classic'引用经典样式,也可以引用其他样式

plt.plot(x, y, '--')    # 虚线
plt.plot(x, y, 'o')    # 点状
plt.plot(x, y, '-p', markersize=10, linewidth=1)    # 五边形,形状大小,线的粗细
plt.plot(x, y, color='red')    # 颜色

plt.title('title')    # 标题
plt.grid()    # 显示网格线
plt.plot(x, y, label='sin(x)')    # 标签
plt.legend(loc=0)    # 显示标签, loc控制位置

ax = plt.gca()    # 轴的编辑器
ax.spines['right'].set_color('none')    # 隐藏右边轴
ax.spines['left'].set_position(('data', 0))    # 设置左边轴位置:数据域0位置
plt.xticks(np.linspace(-np.pi, np.pi, 5), ['$-\pi$', '$-\pi/2$', '0', '$+\pi/2$', '$+\pi$'])    # 设置x轴标识

函数图像实例:

import matplotlib.pyplot as plt
import numpy as np

# 横轴取值范围-Π到Π,等间隔取20个点
x = np.linspace(-np.pi, np.pi, 20)
y1 = np.sin(x)
y2 = np.cos(x)

plt.figure()    # 创建画布

plt.subplot(3, 1, 1)    #创建3*1子图,当前在第1个子图
plt.plot(x, y1, '--', label='sin(x)')    # 使用plot()函数画y1函数图像
plt.legend()    # 显示标签

plt.subplot(3, 1, 2)    #当前在第2个子图
plt.plot(x, y2, 'o', color='orange', label='cos(x)')    # 使用plot()函数画y2函数图像
plt.legend()    

plt.subplot(3, 1, 3)    # 当前在第3个子图
plt.plot(x, y1, label='sin(x)')
plt.plot(x, y2, label='cos(x)')    # 使用plot()函数画y1和y2函数图像
plt.legend()
ax = plt.gca()
ax.spines['top'].set_color('none')    # 隐藏上边轴
ax.spines['right'].set_color('none')    # 隐藏右边轴
ax.spines['left'].set_position(('data', 0))    # 左边轴设置在0位置
ax.spines['bottom'].set_position(('data', 0))    # 下边轴设置在0位置
plt.xticks(np.linspace(-np.pi, np.pi, 5), ['$-\pi$', '$-\pi/2$', '0', '$+\pi/2$', '$+\pi$'])    # 设置x轴标识
plt.yticks(np.linspace(-1, 1, 5))    # 设置y轴标识

# 使用show()函数弹窗显示图形
plt.show()   

散点图

plt.scatter(x, y)

散点图实例:

import matplotlib.pyplot as plt
import numpy as np

plt.style.use('classic')    # 引用经典样式

x = np.random.rand(100)    # 生成100个[0, 1)随机数
y = np.random.rand(100)
colors = np.random.rand(100)
size = 1000*np.random.rand(100)

plt.scatter(x, y, c=colors, s=size, alpha=0.5)    # 绘制散点图
plt.colorbar()    # 显示颜色条

plt.show()

柱状图

plt.bar(x, y)

柱状图实例:

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0, 10, 1)
y1 = 0.1*np.random.randint(3, 10, 10)
y2 = -0.1*np.random.randint(3, 10, 10)

plt.bar(x, y1)    # 绘制柱状图
plt.bar(x, y2)

plt.show()

3D

from mpl_toolkits.mplot3d import Axes3D   # 引入3D模块
fig = plt.figure()
ax = Axes3D(fig)
ax.scatter(x, y, z)    # 在3D空间中画图

3D散点图实例:

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np

x = np.random.rand(250)
y = np.random.rand(250)
z = np.random.rand(250)

fig = plt.figure()
ax = Axes3D(fig)
ax.scatter(x, y, z)

plt.show()