人工智能之数据分析 Matplotlib:第四章 图形类型

人工智能之数据分析 Matplotlib

第四章 图形类型


前言

Matplotlib 支持多种图表类型。本文将详细介绍 散点图、柱形图、饼图、直方图 以及其他常见图表(如箱线图、热力图、面积图、3D 图等)的绘制方法、参数说明和典型应用场景。


一、散点图(Scatter Plot)

用途

显示两个变量之间的关系,常用于观察相关性、聚类或异常值。

基本语法

python 复制代码
plt.scatter(x, y, s=None, c=None, marker=None, cmap=None, alpha=None)
  • x, y:数据点坐标
  • s:点的大小(可为标量或数组)
  • c:颜色(可为单色、颜色列表或数值映射到 colormap)
  • marker:标记样式(如 'o', '^', 's')
  • alpha:透明度(0~1)
  • cmap:颜色映射(配合数值型 c 使用)

示例

python 复制代码
import matplotlib.pyplot as plt
import numpy as np

x = np.random.randn(100)
y = np.random.randn(100)
colors = np.random.rand(100)
sizes = 1000 * np.random.rand(100)

plt.scatter(x, y, c=colors, s=sizes, alpha=0.6, cmap='viridis')
plt.colorbar()  # 显示颜色条
plt.title("Scatter Plot with Color and Size")
plt.show()

二、柱形图(Bar Chart)

用途

比较不同类别之间的数值大小。

垂直柱形图

python 复制代码
plt.bar(x, height, width=0.8, color=None, label=None)

水平柱形图

python 复制代码
plt.barh(y, width, height=0.8)

示例

python 复制代码
categories = ['A', 'B', 'C', 'D']
values = [3, 7, 5, 9]

plt.bar(categories, values, color='skyblue')
plt.title("Bar Chart")
plt.ylabel("Value")
plt.show()

💡 可叠加多个 bar() 实现分组或堆叠柱状图。


三、饼图(Pie Chart)

用途

显示各部分占总体的比例(适用于分类较少的情况)。

基本语法

python 复制代码
plt.pie(sizes, labels=None, autopct=None, startangle=0, explode=None, colors=None)
  • sizes:各扇区大小(自动归一化)
  • labels:标签
  • autopct='%1.1f%%':显示百分比
  • explode:突出某一部分(如 [0, 0.1, 0, 0])
  • startangle:起始角度(默认从 x 轴开始)

示例

python 复制代码
sizes = [25, 35, 20, 20]
labels = ['Apple', 'Banana', 'Cherry', 'Date']
explode = (0, 0.1, 0, 0)  # 突出 Banana

plt.pie(sizes, labels=labels, autopct='%1.1f%%', explode=explode, startangle=90)
plt.title("Pie Chart")
plt.axis('equal')  # 保证圆形
plt.show()

四、直方图(Histogram)

用途

展示数据的分布情况(频率分布)。

基本语法

python 复制代码
plt.hist(data, bins=10, range=None, density=False, alpha=1.0, color=None)
  • data:一维数组
  • bins:分箱数量(整数或边界列表)
  • density=True:归一化为概率密度(面积=1)
  • alpha:透明度(便于叠加多个直方图)

示例

python 复制代码
data = np.random.normal(100, 15, 1000)  # 正态分布

plt.hist(data, bins=30, color='lightgreen', edgecolor='black', alpha=0.7)
plt.title("Histogram")
plt.xlabel("Value")
plt.ylabel("Frequency")
plt.show()

五、其他常用图表

1. 折线图(Line Plot)

python 复制代码
plt.plot(x, y, linestyle='-', marker='o')

最基础的连续数据趋势图。


2. 箱线图(Box Plot)

显示数据的五数概括(最小值、Q1、中位数、Q3、最大值)及异常值。

python 复制代码
plt.boxplot([data1, data2], labels=['Group1', 'Group2'])

3. 面积图(Area Plot)

强调累积总量随时间的变化。

python 复制代码
plt.stackplot(x, y1, y2, labels=['A', 'B'], alpha=0.7)

4. 热力图(Heatmap)

用颜色表示矩阵中数值大小(需结合 imshow 或 pcolormesh)。

python 复制代码
data = np.random.rand(10, 10)
plt.imshow(data, cmap='hot', interpolation='nearest')
plt.colorbar()
plt.title("Heatmap")
plt.show()

更推荐使用 Seaborn 的 sns.heatmap(),功能更强大。


5. 3D 图(需 mpl_toolkits.mplot3d)

python 复制代码
from mpl_toolkits.mplot3d import Axes3D

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
x = np.random.randn(100)
y = np.random.randn(100)
z = np.random.randn(100)
ax.scatter(x, y, z)
plt.show()

6. 子图(Multiple Subplots)

使用 plt.subplots() 创建多图布局:

python 复制代码
import matplotlib.pyplot as plt import numpy as np  
# 创建 2x2 子图 
fig, axs = plt.subplots(2, 2, figsize=(10, 8))  
# 第一个子图:折线图 
x = np.linspace(0, 10, 100) 
y = np.sin(x) 
axs[0, 0].plot(x, y) 
axs[0, 0].set_title('Sine Wave')  
# 第二个子图:散点图 
axs[0, 1].scatter([1, 2, 3], [4, 5, 6]) 
axs[0, 1].set_title('Scatter')  
# 第三个:柱状图 
axs[1, 0].bar(['A', 'B', 'C'], [3, 7, 5]) 
axs[1, 0].set_title('Bar Chart')  
# 第四个:直方图 
data = np.random.randn(1000) 
axs[1, 1].hist(data, bins=20) 
axs[1, 1].set_title('Histogram')  
plt.tight_layout() 
plt.show()

六、选择建议

图表类型 适用场景
散点图 两变量关系、聚类分析
柱形图 类别间比较
饼图 构成比例(类别 ≤ 5)
直方图 数据分布形态
箱线图 分布离散程度、异常值检测
折线图 时间序列、趋势变化
热力图 矩阵/相关性可视化

补充:美化建议

  • 使用 plt.style.use('seaborn-v0_8') 或 'ggplot' 改变整体风格
  • 设置字体:plt.rcParams['font.sans-serif'] = ['SimHei'](中文支持)
  • 保存图像:plt.savefig('chart.png', dpi=300, bbox_inches='tight')

后续

python过渡项目部分代码已经上传至gitee,后续会逐步更新。

资料关注

公众号:咚咚王 gitee:gitee.com/wy185850518...

《Python编程:从入门到实践》 《利用Python进行数据分析》 《算法导论中文第三版》 《概率论与数理统计(第四版) (盛骤) 》 《程序员的数学》 《线性代数应该这样学第3版》 《微积分和数学分析引论》 《(西瓜书)周志华-机器学习》 《TensorFlow机器学习实战指南》 《Sklearn与TensorFlow机器学习实用指南》 《模式识别(第四版)》 《深度学习 deep learning》伊恩·古德费洛著 花书 《Python深度学习第二版(中文版)【纯文本】 (登封大数据 (Francois Choliet)) (Z-Library)》 《深入浅出神经网络与深度学习+(迈克尔·尼尔森(Michael+Nielsen)》 《自然语言处理综论 第2版》 《Natural-Language-Processing-with-PyTorch》 《计算机视觉-算法与应用(中文版)》 《Learning OpenCV 4》 《AIGC:智能创作时代》杜雨+&+张孜铭 《AIGC原理与实践:零基础学大语言模型、扩散模型和多模态模型》 《从零构建大语言模型(中文版)》 《实战AI大模型》 《AI 3.0》

相关推荐
做萤石二次开发的哈哈3 小时前
连锁门店、园区、交通枢纽的视频如何统一汇集?应用模板的接入与分权管理详解
人工智能·物联网·音视频·二次开发·视频监控·蓝海aiot一站式工作台·萤石云开放平台
老金带你玩AI4 小时前
全程拿着手机,我让dot准备了一场AI分享
人工智能
nvd114 小时前
Flink 批处理驱动的湖仓 AI 财务研报流水线:从双流广播汇聚到 Agent 智能决策与原生 Iceberg 落盘全景实战
大数据·人工智能·flink
snhna4 小时前
向量数据库深度实战:从 HNSW 到 pgvector、Milvus 选型与 RAG 落地
数据库·人工智能·python·postgresql·milvus
架构技术专栏4 小时前
Agent 工具调用:从工具声明到执行反馈
前端·人工智能·后端
点云-激光雷达-Slam-三维牙齿4 小时前
100,000 Records CSV File - India Traffic Accident Analysis Dataset.7z
人工智能·数据集
TechWayfarer4 小时前
精度极限的突破:AI与IPv6如何重塑高精度IP查询
人工智能·网络协议·tcp/ip·transformer
七十二时9564 小时前
视频掉帧怎么用AI补帧
人工智能
可达智灵5 小时前
信创适配|织灵 Coda Loom 2.0 完成银河麒麟服务器操作系统 V10、V11 适配认证
人工智能·可达智灵
Wx-bishekaifayuan5 小时前
express皖美特色农产品网售系统53118-计算机课程设计、毕业设计
人工智能·spring boot·后端·python·课程设计·express·旅游