Python数据可视化利器:Matplotlib全解析

matplotlib介绍


        Matplotlib 是 Python 中最流行的数据可视化库之一,广泛用于生成高质量的静态、动态和交互式图表。它提供了类似 MATLAB 的绘图接口,支持多种图表类型,包括折线图、散点图、柱状图、等高线图和 3D 图形等。

matplotlib核心组成

  1. Figure:画布,所有图表元素的容器。
  2. Axes:坐标系,包含坐标轴、标签、标题等,用于绘制具体图表。
  3. Axis:坐标轴,控制刻度、标签和网格线。
  4. Artist:所有可见元素的基类,如文本、线条、图像等

matplotlib安装方法

通过 pip 安装最新版本:

pip install matplotlib

常用图表类型

  1. 折线图plt.plot()
  2. 散点图plt.scatter()
  3. 柱状图plt.bar()
  4. 直方图plt.hist()
  5. 饼图plt.pie()

高级功能

  • 子图布局:通过 plt.subplots() 创建多子图。
  • 样式定制:使用 plt.style.use() 切换预定义样式(如 ggplotseaborn)。
  • 3D 绘图:导入 mpl_toolkits.mplot3d 模块绘制三维图形。

功能方法

折现图

import matplotlib.pyplot as plt
import numpy as np

# 设置字体为 SimHei(黑体)
plt.rcParams['font.sans-serif'] = ['SimHei']
# 解决负号显示为方块的问题
plt.rcParams['axes.unicode_minus'] = False

x = np.array([0, 1, 2, 3, 4])
y = np.array([0, 1, 4, 9, 16])

plt.plot(x, y)
plt.xlabel('X轴标签')
plt.ylabel('Y轴标签')
plt.title('折线图示例')
plt.show()

输出

注意如果我们图中有文字的话,要加一段代码

# 设置字体为 SimHei(黑体)
plt.rcParams['font.sans-serif'] = ['SimHei']
# 解决负号显示为方块的问题
plt.rcParams['axes.unicode_minus'] = False

不然文字可能会无法显示

散点图

import matplotlib.pyplot as plt
import numpy as np

# 设置字体为 SimHei(黑体)
plt.rcParams['font.sans-serif'] = ['SimHei']
# 解决负号显示为方块的问题
plt.rcParams['axes.unicode_minus'] = False

x = np.array([0, 1, 2, 3, 4])
y = np.array([0, 1, 4, 9, 16])

plt.scatter(x,y)
plt.xlabel('X轴标签')
plt.ylabel('Y轴标签')
plt.title('散点图实例')
plt.show()

输出

 plt.subplots() 方法

import matplotlib.pyplot as plt
import numpy as np

# 创建2x2子图布局
fig, axs = plt.subplots(2, 2, figsize=(10, 8))  # figsize控制画布大小
x = np.linspace(0, 10, 100)

# 在每个子图绘制不同图像
axs[0, 0].plot(x, np.sin(x))  # 第一行第一列
axs[0, 0].set_title('Sine Wave')
axs[0, 1].scatter(x, np.cos(x), color='red')  # 第一行第二列
axs[1, 0].bar([1, 2, 3], [3, 7, 2])  # 第二行第一列
axs[1, 1].pie([15, 30, 45], labels=['A', 'B', 'C'])  # 第二行第二列

plt.tight_layout()  # 自动调整子图间距
plt.show()

 上面,我们一个画布上展现了四张图片,并且其中包含了饼图,柱形图,散点图,线图。并且还展示了如歌调换颜色。

3D图像

import numpy as np
import matplotlib.pyplot as plt


# 生成随机数据
np.random.seed(42)
n = 100
x = np.random.rand(n) * 10
y = np.random.rand(n) * 5
z = np.sin(x) + np.cos(y) + np.random.normal(0, 0.2, n)

# 创建3D图形
fig = plt.figure(figsize=(10, 8))
fig = plt.axes(projection="3d")

# 绘制散点图(颜色映射和大小渐变)
scatter = fig.scatter(x, y, z, c=z, cmap='viridis', s=50*(z-z.min()+1), alpha=0.8)

# 添加颜色条

# 设置标签和标题
fig.set(xlabel='X Axis', ylabel='Y Axis', zlabel='Z Axis',
       title='3D Scatter Plot with Color Gradient')
plt.show()

 这样我们就完成了一个3d图像的绘制

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值