人工智能之数据分析 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)

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

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

更推荐使用 Seabornsns.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:https://gitee.com/wy18585051844/ai_learning

《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》

相关推荐
NAGNIP6 小时前
一文搞懂深度学习中的通用逼近定理!
人工智能·算法·面试
冬奇Lab7 小时前
一天一个开源项目(第36篇):EverMemOS - 跨 LLM 与平台的长时记忆 OS,让 Agent 会记忆更会推理
人工智能·开源·资讯
冬奇Lab7 小时前
OpenClaw 源码深度解析(一):Gateway——为什么需要一个"中枢"
人工智能·开源·源码阅读
AngelPP11 小时前
OpenClaw 架构深度解析:如何把 AI 助手搬到你的个人设备上
人工智能
宅小年11 小时前
Claude Code 换成了Kimi K2.5后,我再也回不去了
人工智能·ai编程·claude
九狼11 小时前
Flutter URL Scheme 跨平台跳转
人工智能·flutter·github
ZFSS11 小时前
Kimi Chat Completion API 申请及使用
前端·人工智能
天翼云开发者社区12 小时前
春节复工福利就位!天翼云息壤2500万Tokens免费送,全品类大模型一键畅玩!
人工智能·算力服务·息壤
知识浅谈12 小时前
教你如何用 Gemini 将课本图片一键转为精美 PPT
人工智能
Ray Liang13 小时前
被低估的量化版模型,小身材也能干大事
人工智能·ai·ai助手·mindx