数据可视化是数据分析的核心环节而Matplotlib是 Python 生态中最经典、最常用的可视化库无论是科研绘图、业务报表还是日常数据分析都能完美胜任。它支持折线图、柱状图、散点图、直方图等几乎所有常用图表还能精细化调整样式满足从入门到专业的所有需求。本文全程以代码示例为主从基础安装、简单绘图到进阶样式调整、多子图、常用图表实战带你快速掌握 Matplotlib 核心用法复制代码即可直接运行一、环境准备安装 Matplotlib首先确保已安装 Matplotlib打开终端执行一行命令即可pipinstallmatplotlib二、基础入门第一个 Matplotlib 图表Matplotlib 最核心的模块是pyplot我们通常简写为plt使用。先从最简单的折线图开始这是所有可视化的基础。1. 最简折线图无任何多余配置importmatplotlib.pyplotasplt# AttributeError: FigureCanvasInterAgg object has no attribute tostring_rgb. Did you mean: tostring_argb?# PyCharm Matplotlib 版本不兼容导致的经典报错importmatplotlib matplotlib.use(TkAgg)# 加上这一句# 准备数据x[1,2,3,4,5,6,7,8,9,10]y[2,4,6,8,10,12,14,16,18,20]# 绘制折线图plt.plot(x,y)plt.show()运行效果弹出一个窗口显示一条从左下到右上的直线这是 Matplotlib 最基础的绘图流程。2. 基础图表添加标题、坐标轴标签实际使用中我们需要给图表添加说明让数据更易读importmatplotlib.pyplotasplt# AttributeError: FigureCanvasInterAgg object has no attribute tostring_rgb. Did you mean: tostring_argb?# PyCharm Matplotlib 版本不兼容导致的经典报错importmatplotlib matplotlib.use(TkAgg)# 解决中文显示问题plt.rcParams[font.sans-serif][SimHei]plt.rcParams[axes.unicode_minus]False# 数据x[1,2,3,4,5]y[2,4,6,8,10]# 绘制折线图plt.plot(x,y)# 添加标题plt.title(折线图示例,fontsize16)# 添加标签plt.xlabel(X轴,fontsize12)# 添加标签plt.ylabel(Y轴,fontsize12)plt.show()三、核心常用图表代码直接复制使用Matplotlib 支持数十种图表这里整理工作中最常用的 5 种图表附带完整可运行代码。1. 折线图多组数据 样式自定义折线图适合展示数据随时间 / 序列的变化趋势支持自定义颜色、线型、标记点importmatplotlib.pyplotaspltimportnumpyasnp# 生成连续数据0-10共100个点xnp.linspace(0,10,100)y1np.sin(x)# 正弦曲线y2np.cos(x)# 余弦曲线# 绘制两条折线自定义样式plt.plot(x,y1,colorred,linestyle-,linewidth2,labelsin(x))plt.plot(x,y2,colorblue,linestyle--,linewidth2,labelcos(x))# 添加图例、网格、标题plt.legend()# 显示图例依赖label参数plt.grid(True,alpha0.3)# 添加网格alpha透明度plt.title(正弦余弦曲线,fontsize14)plt.show()2. 柱状图对比分类数据柱状图用于对比不同分类的数据大小是业务分析最常用的图表importmatplotlib.pyplotaspltimportnumpyasnp# PyCharm Matplotlib 版本不兼容导致的经典报错importmatplotlib matplotlib.use(TkAgg)# 解决中文显示问题plt.rcParams[font.sans-serif][SimHei]plt.rcParams[axes.unicode_minus]False# 分类数据categories[产品A,产品B,产品C,产品D]sales[350,520,280,450]# 销量数据plt.bar(categories,sales,color[#FF6B6B,#FFD166,#06D6A0,#118AB2])# 添加数值标签fori,vinenumerate(sales):plt.text(i,v,str(v),hacenter,vabottom)plt.title(产品销量统计)# 图表说明plt.xlabel(产品)plt.ylabel(销量)plt.grid(True,whichmajor,axisy,linestyle--,linewidth0.5,colorgray,alpha0.5)plt.show()3. 散点图展示变量相关性散点图用于展示两个变量之间的关系 / 相关性比如身高与体重、广告投入与销量importmatplotlib.pyplotaspltimportnumpyasnp# PyCharm Matplotlib 版本不兼容导致的经典报错importmatplotlib matplotlib.use(TkAgg)# 解决中文显示问题plt.rcParams[font.sans-serif][SimHei]plt.rcParams[axes.unicode_minus]False# 随机生成数据# 生成100个0-10的随机数xnp.random.rand(100)# 线性相关加噪声yx*2np.random.randn(100)*0.1# 绘制散点图, s点大小 alpha透明度 c颜色 edgecolors边框颜色plt.scatter(x,y,s50,alpha0.5,cred,edgecolorspink)# 标题和标签plt.title(散点图)plt.xlabel(X轴)plt.ylabel(Y轴)plt.grid(True,whichmajor,axisboth,linestyle--,linewidth0.5,colorgray,alpha0.5)plt.show()4. 直方图展示数据分布直方图用于展示数据的分布规律如成绩分布、年龄分布、薪资分布importmatplotlib.pyplotaspltimportnumpyasnp# PyCharm Matplotlib 版本不兼容导致的经典报错importmatplotlib matplotlib.use(TkAgg)# 解决中文显示问题plt.rcParams[font.sans-serif][SimHei]plt.rcParams[axes.unicode_minus]False# 生成正态分布数据xnp.random.randn(1000)# 绘制直方图 bins分组数量30颜色为红色透明度为0.5, 边框颜色为粉色plt.hist(x,bins30,color#FF6B6B,alpha0.5,edgecolorpink)# 添加标题plt.title(正态分布直方图)# 添加x轴标签plt.xlabel(数据值)# 添加y轴标签plt.ylabel(频数)plt.show()5. 饼图展示占比关系饼图用于展示各部分占整体的比例如市场份额、支出结构importmatplotlib.pyplotaspltimportnumpyasnp# PyCharm Matplotlib 版本不兼容导致的经典报错importmatplotlib matplotlib.use(TkAgg)# 解决中文显示问题plt.rcParams[font.sans-serif][SimHei]plt.rcParams[axes.unicode_minus]False# 数据labels[餐饮,购物,交通, Entertainment,医疗,教育,其他]sizes[15,30,20,25,10,15,10]colors[#FF6B6B,#FFD166,#06D6A0,#118AB2,#F72585,#F77F00,#F9D423]# 绘制饼图autopct显示百分比explode突出显示某一块plt.pie(sizes,labelslabels,colorscolors,autopct%1.1f%%,explode[0.1,0,0,0,0,0,0])plt.title(消费占比)# 设置饼图的半径 保证饼图是正圆plt.axis(equal)plt.show()四、进阶用法多子图一张画布画多个图表实际分析中我们经常需要在一张图里展示多个子图Matplotlib 用subplot轻松实现importmatplotlib.pyplotaspltimportnumpyasnp# PyCharm Matplotlib 版本不兼容导致的经典报错importmatplotlib matplotlib.use(TkAgg)# 解决中文显示问题plt.rcParams[font.sans-serif][SimHei]plt.rcParams[axes.unicode_minus]False# 创建画布2行2列共四个子图fig,axsplt.subplots(2,2)# 子图1折线图axs[0,0].plot([1,2,3,4],[10,20,30,40])# 子图2柱状图axs[0,1].bar([1,2,3,4],[10,20,30,40])# 子图3散点图axs[1,0].scatter([1,2,3,4],[10,20,30,40])# 子图4饼图axs[1,1].pie([10,20,30,40],labels[A,B,C,D])# 自动调整子图距离plt.tight_layout()plt.show()五、实用技巧保存高清图片绘制好的图表可以直接保存为PNG、PDF、SVG等格式支持设置分辨率适合论文、报告importmatplotlib.pyplotasplt x[1,2,3,4,5]y[2,4,6,8,10]plt.plot(x,y)# 保存图片dpi分辨率越高越清晰 自动裁剪图表多余空白plt.savefig(my_plot.png,dpi300,bbox_inchestight)plt.close()六、总结Matplotlib 是 Python 数据可视化的基石核心用法非常简单导入模块import matplotlib.pyplot as plt准备数据列表 / 数组均可绘制图表plt.plot()/plt.bar()/plt.scatter()等添加样式标题、标签、图例、网格显示 / 保存plt.show()/plt.savefig()本文所有代码复制即可运行覆盖日常分析 90% 的可视化场景。熟练掌握这些基础用法后再结合 Pandas、Seaborn 等库能轻松完成更复杂的数据分析与可视化工作。Matplotlib 核心模块是pyplot简写plt是行业通用习惯常用图表折线图 (趋势)、柱状图 (对比)、散点图 (相关性)、直方图 (分布)、饼图 (占比)基础流程导库→准备数据→绘图→美化→显示 / 保存多子图用subplot保存高清图用savefig\(dpi300\)。