文章目录
1、热力图、等高线图、三维曲面图
1.1、创建数据
import numpy as np
import matplotlib.pyplot as mp
a = np.linspace(-3, 3, 999)
x, y = np.meshgrid(a, a)
z = (1 - x / 2 + x ** 5 + y ** 3) * np.exp(-x ** 2 - y ** 2)
1.2、热力图
# 绘制热力图
mp.imshow(z, origin='low', cmap='jet')
# 颜色条
mp.colorbar()
# 展示窗口
mp.show()
1.3、等高线图
# 绘制等高线
cntr = mp.contour(x, y, z, colors='black')
# 填充颜色
mp.contourf(x, y, z, cmap='jet')
# 显示各等高线的数据标签
mp.clabel(cntr, fmt='%.1f')
# 颜色条
mp.colorbar()
# 展示窗口
mp.show()
1.4、三维曲面图
from mpl_toolkits import mplot3d
# 创建figure对象
fig = mp.figure('3D')
# 获取3维坐标轴
ax = mplot3d.Axes3D(fig)
# 绘制3d图
ax.plot_surface(x, y, z, rstride=10, cstride=10, cmap='jet')
# 展示窗口
mp.show()
2、散点图、三维散点图
2.1、创建数据
import numpy as np
import matplotlib.pyplot as mp
# 创建数据
x = np.random.normal(0, 1, 99)
y = np.random.normal(0, 1, 99)
z = np.random.normal(0, 1, 99)
2.2、散点图
mp.scatter(x, y, s=111, alpha=0.4)
mp.show()
2.3、三维散点图
from mpl_toolkits import mplot3d
# 创建figure对象
fig = mp.figure('3D Scatter')
# 获取3维坐标轴
ax = mplot3d.Axes3D(fig)
# 3维散点图
ax.scatter(x, y, z, s=111, alpha=0.3)
# 展示窗口
mp.show()
3、折线图、条形图、饼图
3.1、创建数据
import matplotlib.pyplot as mp
x = ['3/11', '3/12', '3/13', '3/14']
y = [4, 1, 3, 2]
3.2、折线图
mp.plot(x, y)
mp.show()
3.3、条形图
mp.bar(x, y)
mp.show()
3.4、饼图
mp.pie(y, labels=x)
mp.show()
4、箱图、小提琴图
4.1、创建数据
from sklearn.datasets import load_iris
import seaborn
from matplotlib import pyplot as mp
bunch = load_iris()
x = bunch.data[:, 0]
y = bunch.target
4.2、箱图
seaborn.boxplot(x=y, y=x)
4.3、小提琴图
seaborn.violinplot(x=y, y=x)
4.4、蜂群图
seaborn.swarmplot(x=y, y=x)
5、对数坐标
import numpy as np
import matplotlib.pyplot as mp
# 创建数据
y = np.array([1, 10, 100, 1000, 10000])
# semilogy(水平坐标数组, 垂直坐标数组, ...)
mp.semilogy(y, 'o')
# 展示窗口
mp.show()
6、桑基图
from matplotlib import pyplot as mp
from matplotlib.sankey import Sankey
# 数据流
flows = [.2, .5, .3, -0.6, -0.1, -0.1, -0.2]
# 标签
labels = ['farina', 'egg', 'sugar', 'cake', 'cookies', 'bread', 'biscuits']
# 流向:1在上方,0在水平,-1在下方
orientations = [1, 0, -1, 0, -1, 1, 1]
# 创建桑基图对象
sankey = Sankey()
# 添加绘制数据
sankey.add(
patchlabel='make dessert', # 桑基图标题
flows=flows, # 收入支出数据
orientations=orientations, # 每个数据显示在上方或者下方或者水平
labels=labels, # 数据标签
alpha=.5
)
diagrams = sankey.finish()
mp.show()
7、极坐标
import numpy as np
import matplotlib.pyplot as mp
# 创建数据
t = np.linspace(0, 2 * np.pi, 1001)
r_spiral = 0.8 * t
# 获取极坐标
mp.gca(projection='polar')
# mp.plot(极角, 极径, ...)
mp.plot(t, r_spiral, label=r'$\rho=0.8\theta$')
# 显示标签
mp.legend()
# 展示窗口
mp.show()
8、动态图
动态刷新
import matplotlib.pyplot as mp
fig, ax = mp.subplots()
x = list(range(1, 50))
for i in range(2, 51):
ax.cla() # 清除
ax.bar(x[:i], x[:i]) # 绘图
mp.pause(.02)
动态添加
import matplotlib.pyplot as mp, numpy as np
mp.axis([-8, 8, -1, 1])
x = np.linspace(-8, 8, 400)
y = np.sin(x)
for i in range(400):
mp.scatter(x[i], y[i], 1, c='b')
mp.pause(1e-9)