Matplotlib入门

Matplotlib入门

2026年9月20日·#编程学习/python学习笔记Python/数据分析·922 字 5 分钟
浏览量加载中...
AI 摘要

Matplotlib 是什么、如何画折线图,以及画布/标题/轴标签/刻度/网格/图例等图表元素的设置方法

Matplotlib 是什么#

Matplotlib 是一个功能强大的数据可视化开源 Python 库,也是 Python 中使用最多的绘图库,可以创建静态、动态、交互式的图表。

官网:https://matplotlib.org

Terminal window
pip install matplotlib

入门程序:画一条折线#

import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [6, 2, 9, 8, 10]
plt.plot(x, y) # 折线图
plt.show() # 显示图表
Warning

X 轴的数据数量与 Y 轴的数据数量必须一致,否则画不出来(10 个点就必须都是 10 个)。

一份完整的折线图#

import matplotlib.pyplot as plt
import random
# 展示中文:设置中文字体为黑体(不设置的话中文会变成方块)
plt.rcParams['font.sans-serif'] = ['SimHei']
x = [i for i in range(1, 25)]
y_bj = [random.randint(10, 15) for i in x]
y_xa = [random.randint(13, 18) for i in x]
plt.figure(figsize=(10, 5)) # 设置画布大小(宽, 高);不写会自动创建
plt.plot(x, y_bj, label='北京') # 折线图,label 用于图例
plt.plot(x, y_xa, label='西安')
# 设置折线图的详细信息
plt.title('气温变化折线图', fontsize=15) # 标题
plt.xlabel('时间') # X 轴标签
plt.ylabel('温度') # Y 轴标签
plt.xticks(x) # X 轴刻度
plt.yticks(range(5, 21)) # Y 轴刻度
plt.grid(linestyle='--', alpha=0.3) # 网格线(虚线、透明度 0.3)
plt.legend(loc='upper right') # 图例(位置:右上)
plt.show()

图表元素对照表#

元素设置方式
画布(Figure)plt.figure(figsize=(宽, 高))
折线plt.plot(x, y, label='图例名')
标题(Title)plt.title('...')
X/Y 轴标签plt.xlabel('...') / plt.ylabel('...')
X/Y 轴刻度plt.xticks(...) / plt.yticks(...)
网格线(Grid)plt.grid(linestyle='--', alpha=0.3)
图例(Legend)plt.legend(loc='upper right')
显示图表plt.show()
Tip

labellegend 是配套的:每条折线都要写 labelplt.legend() 才会显示出图例;只调 legend() 不写 label,图例是空的。

相关#

练习题#

一、回忆填空(写完再展开对答案)#

  1. Matplotlib 是 Python 中使用最多的 ____ 库,安装命令 pip install ____
  2. 画折线用 plt.____(x, y);显示图表用 plt.____()
  3. 画折线前必须保证 X 轴与 Y 轴的 ____ 一致
  4. 展示中文要设置 plt.rcParams['font.sans-serif'] = ['____']
  5. 设置画布大小:plt.figure(figsize=(____, ____))
  6. 设置标题用 plt.____('...');X 轴标签用 plt.____('...');网格线用 plt.____();图例用 plt.____()
填空答案(做完再点开)
  1. 可视化(绘图)/ matplotlib 2. plot / show 3. 数据数量 4. SimHei(黑体) 5. 宽, 高 6. title / xlabel / grid / legend

二、裸写题#

  • 2-1 画一条最简单的折线 x 取 1~10,y 取这 10 个数的平方,画出折线图(不用设置中文)。

    提示(先自己想,实在想不出再点开)

    一级 · 思路:准备两组等长的列表 → 画 → 显示 二级 · 方法plt.plot(x, y) / plt.show() 三级 · 骨架y = [i ** 2 for i in x]

  • 2-2 加满细节的折线图 画两条折线(北京/西安的气温,数据自拟),要求有:中文标题、XY 轴标签、X 轴刻度、网格线、图例。

    提示

    一级 · 思路:先设中文字体,再画线(带 label),最后统一设置文字与网格 二级 · 方法rcParams / plot(..., label=) / title / xlabel / ylabel / xticks / grid / legend 三级 · 骨架plt.legend(loc='upper right') 显示图例

  • 2-3 把图保存成图片 在 2-2 的基础上,把图表保存成 chart.png 再显示。

    提示

    一级 · 思路:保存要在 show() 之前(show 之后画布会被清掉) 二级 · 方法plt.savefig('chart.png') 三级 · 骨架savefig 也可以指定 dpi=100

参考答案(做完再点开)
import matplotlib.pyplot as plt
# 2-1
x = [i for i in range(1, 11)]
y = [i ** 2 for i in x]
plt.plot(x, y)
plt.show()
# 2-2 / 2-3
plt.rcParams['font.sans-serif'] = ['SimHei']
x = [i for i in range(1, 13)]
y_bj = [10, 12, 15, 18, 22, 26, 28, 27, 23, 18, 13, 11]
y_xa = [12, 14, 17, 21, 25, 29, 31, 30, 26, 21, 16, 13]
plt.figure(figsize=(10, 5))
plt.plot(x, y_bj, label='北京')
plt.plot(x, y_xa, label='西安')
plt.title('气温变化折线图', fontsize=15)
plt.xlabel('月份')
plt.ylabel('温度(℃)')
plt.xticks(x)
plt.grid(linestyle='--', alpha=0.3)
plt.legend(loc='upper right')
plt.savefig('chart.png') # 先保存
plt.show() # 再显示

评论区

[ 标签 ]
# AI37# AI 编程2# AI工具1# Ajax2# Apifox1# AstrBot3# Astro2# CC Switch1# CDN2# Claude Code1# claudecode2# ClaudeCode1# Cloudflare2# CloudFlare2# CloudFlare-ImgBed3# coc3# CSS6# DeepSeek6# deepseek2# DELETE1# Docker1# EdgeOne3# Gist1# git1# GitHub1# hexo-circle-of-friends1# HTML6# HTTP5# ImageManager1# Java23# java13# JavaScript5# JDBC3# JSON2# JUnit1# LangChain25# Logback1# Maven6# Muse Spark1# Mybatis1# MyBatis4# MySQL28# MySql1# NapCat1# Node.js1# obsidian2# Obsidian5# OpenCode4# ORM1# PathVariable1# PicGo1# PyCharm1# Python65# RequestBody1# RequestMapping1# RESTful风格1# skills1# Slf4j1# SpringBoot11# SQL2# Streamlit5# Svelte2# TailwindCSS1# Telegram3# Tlias2# Vercel1# vscode2# Vue7# Waline3# WebDAV1# Web基础6# Web开发6# WinSCP1# YAML1# 三层架构1# 中二宣言1# 书籍1# 使用文档10# 写作1# 函数2# 刷步数1# 前端32# 动态1# 动漫1# 包1# 单词2# 博客7# 博客工作流1# 博客开发2# 参数接收1# 友链1# 反思2# 图床6# 地图1# 备份2# 大模型1# 奇思妙想1# 存储1# 学习方法6# 学校1# 宝塔面板3# 宝宝10# 对象1# 导航栏1# 工具2# 开发1# 开发工具1# 开发规范1# 开心1# 异常处理1# 影视2# 微信1# 性能优化2# 总结1# 想法15# 感受1# 感悟11# 指南1# 提示词工程1# 插件5# 故障排除1# 效率工具2# 教程10# 数据分析9# 数据库27# 数据结构1# 文件操作2# 斩神1# 日常92# 日志框架1# 朋友圈1# 朱元璋1# 模块1# 模板1# 正则表达式2# 测试1# 游戏2# 爬虫7# 生活迁移1# 电影2# 电脑1# 碎碎念1# 视觉识别1# 类1# 类型注解1# 网络基础2# 网络教室1# 羊毛2# 脚本2# 脚本工具1# 自动化2# 蓝奏云1# 订阅推荐2# 记录2# 评论系统1# 词根1# 词缀1# 说说1# 足迹1# 跑步2# 路径参数1# 转载2# 运动1# 部落冲突1# 配置1# 随机图1# 面向对象5# 音乐3# 音标1# 饮食1# 驼峰命名1# 高德地图1
[ 公告 ]

如果你喜欢,那么欢迎来到我的世界!

了解更多
[ 音乐 ]
封面

音乐

暂未播放

0:000:00
暂无歌词
找不到相关结果。
[ contents ]
[ 全部文章 ]