你是不是也有过这样的困扰?面对一堆密密麻麻的表格数据,眼睛都看酸了,还是找不到其中的规律和重点?其实不用愁,Python里有两个“神器”——Matplotlib 和 Seaborn,能轻松把枯燥的表格,变成直观又好看的图表,让数据自己“说话”!今天我们就从最基础的内容讲起,全程大白话,带你零基础入门数据可视化~
🎨 Matplotlib:Python可视化的“基础画笔”
Matplotlib 是 Python 里最基础、最核心的绘图工具,就像我们画画时手里的画笔和画板,不管是简单的折线图、柱状图,还是复杂的组合图,它都能画出来,是入门的必学工具。
✏️ Matplotlib的核心概念
用Matplotlib绘图,就像在纸上画画,记住三个关键“部件”,就再也不懵了:
•画板(Figure):就是我们画画用的“白纸”,可以自己设置大小、背景颜色(默认是白色);
•画布(Axes):就是白纸上用来画画的“区域”,一张白纸(画板)上,能画多个小区域(比如左边画折线图、右边画柱状图);
•子图(Subplot):就是每个区域里画的“具体图表”,我们最终看到的折线图、柱状图,都是画在子图里的。
📝 Matplotlib绘图7步走,零基础也能上手
不用死记硬背,照着这个流程来,每次都能画出规范又好看的图表:
1.准备数据:先把要画图的数据整理好,比如用列表、表格(Pandas DataFrame)存起来,确保数据是干净的;
2.创建画板:用 plt.figure() 打开一张“白纸”,可以顺便设置大小(比如宽10、高6)、背景色;
3.创建子图:用 plt.subplots() 划分“画图区域”,比如想画2张图,就分成2个区域;
4.加标题:用 plt.title() 给图表起个名字,比如“学生语文成绩变化”,让人一眼知道图表讲的是什么;
5.设置坐标轴:用plt.xlabel() 和 plt.ylabel() 给x轴、y轴加标签(比如x轴写“时间”,y轴写“分数”),还能设置数值范围;
6.开始画图:调用 plt.plot()(画折线图)、plt.bar()(画柱状图),把整理好的数据传进去,图表就初步成型了;
7.展示/保存:用 plt.show() 就能看到画好的图,想保存的话就用 plt.savefig(),存成图片文件(比如png格式)。
🌈 Matplotlib的颜色怎么设?很简单!
Matplotlib 支持很多种设颜色的方式,最常用的是RGB颜色模式,简单说就是用三个数字表示颜色,每个数字的范围是0到1(0代表没有这个颜色,1代表这个颜色最浓)。
•比如(1, 0, 0) 就是纯红色,(0, 1, 0) 是纯绿色,(0, 0, 1) 是纯蓝色;
•嫌麻烦的话,直接写颜色名称(比如 'red' 红色、'blue' 蓝色)、缩写('r' 红色、'b' 蓝色),或者用十六进制代码(比如 '#FF0000' 红色)也可以。
✨ Seaborn:让图表“一键美颜”的神器
如果说 Matplotlib 是基础画笔,那 Seaborn 就是带了“美颜滤镜”的画笔!它是在 Matplotlib 的基础上开发的,用法更简单,画出来的图默认就很好看,尤其适合处理统计类数据(比如成绩分布、数据相关性)。
📈 Seaborn的3个核心优势
•颜值高:自带多种好看的主题,一行代码就能让图表告别“土味”,不用自己慢慢调样式;
•用法简:对表格数据(Pandas DataFrame)特别友好,直接把表格传进去,就能画图,不用额外处理数据;
•懂统计:自带统计分析功能,比如能自动画出数据的分布曲线、添加置信区间,不用自己写复杂的统计代码。
📊 实战:用Seaborn画学生成绩图
我们拿一个常见的学生成绩表举例,教你用Seaborn快速画出3种常用图表,分析各科成绩的分布和相关性,全程复制代码就能运行~
1. 先准备数据(复制代码直接用)
python import pandas as pd import seaborn as sns import matplotlib.pyplot as plt # 模拟学生成绩数据(8个学生,4个科目) data = pd.DataFrame({ '语文': [85, 92, 78, 90, 88, 76, 95, 80], '数学': [90, 88, 95, 82, 91, 79, 85, 87], '英语': [82,90, 75, 88, 85, 80, 92, 78], '总分': [257, 270, 248, 260, 264, 235, 272, 245] }) |
2. 画各科成绩分布(直方图+密度曲线)
想知道语文、数学、英语成绩集中在哪个分数段,画这个图最直观:
python sns.set_style("whitegrid")# 设置图表主题(自带美颜) plt.figure(figsize=(10, 6))# 设置图表大小 # 绘制直方图,kde=True表示添加密度曲线,palette是颜色搭配 sns.histplot(data=data[['语文', '数学', '英语']], kde=True, palette='viridis') plt.title('各科成绩分布情况')# 图表标题 plt.xlabel('分数')# x轴标签 plt.ylabel('人数')# y轴标签 plt.show()# 展示图表 |
3. 画成绩相关性热力图
想知道语文、数学、英语成绩之间有没有关联(比如数学好的人,英语是不是也容易好),用热力图一看就懂:
python plt.figure(figsize=(8, 6))# 设置图表大小 corr = data.corr()# 计算成绩之间的相关性 # 绘制热力图,annot=True表示显示具体数值,cmap是颜色搭配 sns.heatmap(corr, annot=True, cmap='coolwarm') plt.title('成绩相关性热力图')# 图表标题 plt.show()# 展示图表 |
4. 画箱线图(对比各科成绩分布)
想对比三科成绩的中位数、最高分、最低分,以及有没有异常分数,箱线图最合适:
python plt.figure(figsize=(10, 6))# 设置图表大小 # 绘制箱线图,palette是颜色搭配 sns.boxplot(data=data[['语文', '数学', '英语']], palette='Set2') plt.title('各科成绩箱线图对比')# 图表标题 plt.ylabel('分数')# y轴标签 plt.show()# 展示图表 |
📌 重点:Matplotlib 和 Seaborn 怎么配合用?
日常做数据可视化,这两个工具搭配起来用,效率最高、效果最好,堪称“黄金搭档”:
•用 Matplotlib 搭“框架”:比如设置画板大小、划分子图布局(比如一张图里放4个小图表)、调整坐标轴、加标题;
•用 Seaborn 画“核心”:用Seaborn的函数绘制具体的图表(比如直方图、热力图),既省时间,又好看;
•灵活调整:画完之后,还能用品Matplotlib的功能,微调图表的细节(比如颜色、字体),满足自己的需求。
举个例子:你可以用品Matplotlib创建一个2行2列的子图布局,再用品Seaborn在每个子图里,分别画直方图、箱线图、散点图和热力图,一张图就能展示所有关键信息,既高效又专业。
💡 入门小贴士
1.先学Matplotlib,再学Seaborn:Matplotlib是基础,掌握它的核心概念和绘图流程,再学Seaborn会特别轻松,事半功倍;
2.多练真实数据:不用一开始就追求复杂图表,从自己身边的数据集入手(比如自己的成绩、每月开销),先画简单的折线图、柱状图,练熟基础操作;
3.善用官方文档:遇到不会的问题,直接查Matplotlib和Seaborn的官方文档,里面有超多示例,照着抄就能解决;
4.从模仿开始:看到好看的图表,试着拆解它的结构(比如用了什么图、颜色怎么设的),然后自己用品代码复现,慢慢就能找到技巧。
最后提醒一句:数据可视化不是“炫技”,核心是帮我们更好地理解数据、发现数据背后的规律。只要掌握了Matplotlib和Seaborn这两个工具,下次再面对密密麻麻的表格数据,你就能轻松画出专业又直观的分析图表,让数据为你所用啦!