Python学习笔记之matplotlib绘图
程序员文章站
2022-03-18 20:45:30
...
使用pip安装matplotlib:
pip install matplotlib
导入模块并起别名plt:
import matplotlib.pyplot as plt
简单绘图
plt.plot(x, y) # 绘制y=f(x) 的图像
plt.show() # 显示图像
多子图画图步骤
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, label='sin(x)', color='red', linewidth=1.0, linestyle='--', alpha=0.5) # label 图像标签,color 指定颜色,linewidth 线宽,linestyle 线形,alpha 透明度
plt.title('title') # 标题
plt.grid() # 显示网格线
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()