news 2026/6/10 17:00:53

Day 50:【99天精通Python】数据可视化 Matplotlib 基础 - 绘图入门

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Day 50:【99天精通Python】数据可视化 Matplotlib 基础 - 绘图入门

Day 50:【99天精通Python】数据可视化 Matplotlib 基础 - 绘图入门

前言

欢迎来到第50天!

“一图胜千言”。在数据分析中,无论你的数据处理得多完美,如果不能用直观的图表展示出来,老板和客户是看不懂的。

Matplotlib是 Python 最基础、最强大的绘图库。它是许多高级可视化库(如 Seaborn, Pandas Plot)的底层。虽然它的默认样式稍微有点"理工男审美"(朴素),但只要稍加配置,它也能画出出版级的高质量图表。

本节内容:

  • Matplotlib 画图逻辑 (Figure, Axes)
  • 绘制折线图 (Line Plot)
  • 绘制散点图 (Scatter Plot)
  • 绘制饼图 (Pie Chart)
  • 设置标题、标签、图例、网格
  • 保存图片

一、画图的逻辑:画布与坐标系

很多初学者容易被plt.plotax.plot搞晕。我们先理清概念:

  1. Figure (画布):整个图片的底板。
  2. Axes (坐标系):画布上的一块区域,我们在这里画图(包含 x轴、y轴、标题等)。一张画布可以有多个坐标系(子图)。
importmatplotlib.pyplotaspltimportnumpyasnp# 1. 创建画布 (宽8英寸,高6英寸)fig=plt.figure(figsize=(8,6))# 2. 创建坐标系 (111 表示 1行1列的第1个子图)ax=fig.add_subplot(111)# 3. 画图x=[1,2,3,4]y=[10,20,15,30]ax.plot(x,y)# 4. 显示plt.show()

简便写法:如果只有一张图,可以直接用plt.plot(),它会自动创建 Figure 和 Axes。


二、折线图 (Line Plot)

折线图最适合展示趋势(如股票走势、气温变化)。

x=np.linspace(0,10,100)y=np.sin(x)plt.figure(figsize=(10,5))# plot(x, y, 格式字符串, label=...)# 'r--': 红色(red) 虚线(dashed)plt.plot(x,y,'r--',label='Sin Wave')# 再画一条 cos 曲线plt.plot(x,np.cos(x),'b-',label='Cos Wave')# 设置细节plt.title("Sin & Cos Function")plt.xlabel("Time (s)")plt.ylabel("Value")plt.legend()# 显示图例 (label)plt.grid(True)# 显示网格plt.show()

三、散点图 (Scatter Plot)

散点图用于观察两个变量之间的关系(如身高与体重、房价与面积)。

# 生成 50 个随机点x=np.random.rand(50)y=np.random.rand(50)colors=np.random.rand(50)# 随机颜色sizes=np.random.rand(50)*100# 随机大小plt.scatter(x,y,c=colors,s=sizes,alpha=0.5)# alpha 透明度plt.title("Random Scatter")plt.show()

四、饼图 (Pie Chart)

饼图用于展示占比

labels=['Python','Java','C++','Go']sizes=[45,30,15,10]explode=(0.1,0,0,0)# 突出显示第一块 (Python)plt.pie(sizes,labels=labels,explode=explode,autopct='%1.1f%%',# 显示百分比shadow=True,startangle=90)plt.axis('equal')# 保证饼图是圆的,不是扁的plt.title("Programming Language Share")plt.show()

五、中文显示问题 (复习)

Matplotlib 默认不支持中文,需要手动设置字体。

# Windowsplt.rcParams['font.sans-serif']=['SimHei']# Mac# plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']plt.rcParams['axes.unicode_minus']=False# 解决负号显示问题plt.plot([1,2,3],[10,20,30])plt.title("中文标题测试")plt.show()

六、多子图 (Subplots)

在一张画布上画多张图。

x=np.linspace(0,10,100)# 创建 2行1列 的布局fig,axes=plt.subplots(2,1,figsize=(8,8))# 第1张图 (axes[0])axes[0].plot(x,np.sin(x),'r')axes[0].set_title("Sin")# 第2张图 (axes[1])axes[1].plot(x,np.cos(x),'b')axes[1].set_title("Cos")plt.tight_layout()# 自动调整间距,防止重叠plt.show()

七、保存图片

plt.plot(x,y)# dpi: 分辨率 (dots per inch),越高越清晰plt.savefig("my_plot.png",dpi=300)

八、实战练习:股票走势图

模拟一支股票 10 天的收盘价,绘制折线图,并标出最高点。

days=range(1,11)prices=[10,12,11,14,13,16,18,15,19,22]plt.figure(figsize=(10,6))plt.plot(days,prices,marker='o',linestyle='-',color='g')# 标注最高点max_price=max(prices)max_day=days[prices.index(max_price)]# annotate(文本, xy=目标点, xytext=文字位置, arrowprops=箭头样式)plt.annotate(f'Peak:{max_price}',xy=(max_day,max_price),xytext=(max_day-2,max_price+2),arrowprops=dict(facecolor='red',shrink=0.05))plt.title("Stock Price Trend")plt.xlabel("Day")plt.ylabel("Price ($)")plt.grid(True)plt.show()

九、小结

Matplotlib 绘图

基本流程

图表类型

美化配置

Figure (画布)

Axes (坐标系)

show() / savefig()

plot (折线)

scatter (散点)

bar (柱状 - 见Day36)

pie (饼图)

title / xlabel / ylabel

legend (图例)

grid (网格)

中文支持

关键要点

  1. 简单图用plt.xxx,复杂多子图用fig, ax = plt.subplots()
  2. 记住常用的图表类型:趋势看折线,占比看饼图,关系看散点,对比看柱状。
  3. 遇到中文乱码别慌,设置font.sans-serif

十、课后作业

  1. 成绩分布图:随机生成 100 个 0-100 的学生成绩,绘制直方图 (Histogram)查看分数分布情况(提示:plt.hist)。
  2. 双轴图:在同一张图上,左边 Y 轴显示"销售额"(柱状图),右边 Y 轴显示"增长率"(折线图)。(提示:ax.twinx())。
  3. 函数绘制:绘制y=x2y = x^2y=x2y=x3y = x^3y=x3的图像,设置不同的颜色和线型,并添加图例。

下节预告

Day 51:数据可视化 Seaborn 进阶- Matplotlib 写起来代码太多?Seaborn 基于 Matplotlib,能用更少的代码画出更漂亮、更统计学专业的图表(如热力图、箱线图)。


系列导航

  • 上一篇:Day 49 - Pandas进阶
  • 下一篇:Day 51 - 数据可视化Seaborn进阶(待更新)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/23 9:00:31

教育评估自动化:PDF-Extract-Kit在学生作业分析应用

教育评估自动化:PDF-Extract-Kit在学生作业分析应用 随着教育数字化进程的加速,教师面临大量纸质或PDF格式的学生作业批改任务。传统人工评阅不仅耗时耗力,且难以实现结构化数据留存与横向对比分析。在此背景下,自动化文档内容提…

作者头像 李华
网站建设 2026/6/10 10:34:28

亲测Z-Image-Turbo_UI界面,输入提示词秒出高质量图片

亲测Z-Image-Turbo_UI界面,输入提示词秒出高质量图片 1. 引言:从命令行到图形化——AI图像生成的体验升级 在当前文本到图像模型快速发展的背景下,Z-Image-Turbo 凭借其出色的生成质量和极快的推理速度(仅需8步即可输出高清图像…

作者头像 李华
网站建设 2026/6/10 15:22:29

Qwen3-VL-30B新手指南:没GPU也能玩转多模态AI

Qwen3-VL-30B新手指南:没GPU也能玩转多模态AI 你是不是也和我一样,对AI图像理解特别感兴趣?看到别人用大模型分析照片、识别文档、甚至看图写文案,心里痒痒的。但一搜教程,满屏都是“安装CUDA”“配置PyTorch”“显存…

作者头像 李华
网站建设 2026/6/10 2:37:47

FRCRN语音降噪模型部署案例:4090D显卡性能调优技巧

FRCRN语音降噪模型部署案例:4090D显卡性能调优技巧 1. 技术背景与应用场景 随着智能语音设备的普及,语音信号在真实环境中的质量受到噪声干扰的问题日益突出。尤其在单麦克风场景下,缺乏空间信息支持,对降噪算法提出了更高要求。…

作者头像 李华
网站建设 2026/6/9 20:41:49

高效中文逆文本标准化|基于FST ITN-ZH镜像一键转换

高效中文逆文本标准化|基于FST ITN-ZH镜像一键转换 在语音识别、自然语言处理和智能客服等实际应用中,系统输出的原始文本往往包含大量口语化表达。例如,“二零零八年八月八日”、“早上八点半”或“一百二十三”,这些表述虽然人…

作者头像 李华
网站建设 2026/6/10 14:50:52

Whisper Large v3实战:会议录音自动摘要系统搭建

Whisper Large v3实战:会议录音自动摘要系统搭建 1. 引言 1.1 业务场景与痛点分析 在现代企业协作中,会议已成为信息传递和决策制定的核心环节。然而,随着远程办公的普及,线上会议数量激增,大量音频内容难以高效整理…

作者头像 李华