2、matplotlib 基本图表大全(极简)

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)

附录

主目录
GitHub地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小基基o_O

您的鼓励是我创作的巨大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值