Matplotlib + Seaborn 全套教程(数据分析绘图标配)

发布时间:2026/7/31 2:22:04
Matplotlib + Seaborn 全套教程(数据分析绘图标配) 核心区别Matplotlib底层绘图库自由度极高所有图表的基础可自定义每一处细节代码偏繁琐Seaborn基于Matplotlib封装的高级库自带好看配色、统计图表分布图、热力图、箱线图等代码简洁适合数据分析可视化二者搭配使用Seaborn画主体图表Matplotlib调整标题、坐标轴、图例、布局细节。一、环境安装pipinstallmatplotlib seaborn pandas numpy二、全局基础配置必写解决中文乱码、负号显示异常importmatplotlib.pyplotaspltimportseabornassnsimportpandasaspdimportnumpyasnp# 全局设置中文plt.rcParams[font.sans-serif][SimHei,WenQuanYi Micro Hei]# 解决负号无法显示plt.rcParams[axes.unicode_minus]False# seaborn全局风格5种white/dark/whitegrid/darkgrid/tickssns.set_style(whitegrid)# 画布默认大小plt.rcParams[figure.figsize](10,6)三、准备测试数据集用经典鸢尾花数据集 模拟销售数据所有案例通用# 内置统计数据集irissns.load_dataset(iris)# 模拟销售数据np.random.seed(2026)sale_datapd.DataFrame({月份:list(range(1,13)),销售额:np.random.randint(2000,8000,12),区域:np.random.choice([华东,华北,华南],12)})四、常用图表实战工作最常用1. 折线图趋势展示月度销量、时序数据适合时间序列涨跌变化# seaborn绘制折线sns.lineplot(datasale_data,x月份,y销售额,color#1f77b4,linewidth2)# matplotlib微调细节plt.title(全年月度销售额趋势,fontsize14,pad15)plt.xlabel(月份,fontsize12)plt.ylabel(销售额(元),fontsize12)plt.xticks(range(1,13))sns.despine()# 去除上下多余边框plt.show()2. 柱状图类别数值对比区域销量对比# 分组求和area_salesale_data.groupby(区域)[销售额].sum().reset_index()sns.barplot(dataarea_sale,x区域,y销售额,paletteBlues_d)plt.title(三大区域年度总销售额对比)plt.show()3. 直方图密度图数据分布查看数值集中区间查看销售额整体分布是否正态分布# 直方图核密度曲线sns.histplot(datasale_data,x销售额,kdeTrue,bins6,colorsteelblue)plt.title(销售额数值分布)plt.show()4. 箱线图排查异常值数据分析清洗必备识别数据里极端高低异常订单sns.boxplot(datasale_data,x区域,y销售额,paletteSet2)plt.title(各区域销售额分布异常值检测)plt.show()5. 散点图两个变量相关性# 鸢尾花数据花萼长度与花瓣长度相关性sns.scatterplot(datairis,xsepal_length,ypetal_length,huespecies,s60)plt.title(花草尺寸相关性散点图)plt.legend(title花卉种类)plt.show()6. 热力图相关性矩阵大数据最常用查看多个数值字段之间相关系数挖掘指标关联# 计算相关系数矩阵corriris.select_dtypes(includenp.number).corr()# 绘制热力图sns.heatmap(corr,annotTrue,cmapcoolwarm,fmt.2f,linewidths0.5)plt.title(特征相关性热力图)plt.show()annotTrue格子内显示相关系数cmap冷暖配色正数红(正相关)、负数蓝(负相关)7. 饼图占比分析matplotlib绘制seaborn无饼图area_salesale_data.groupby(区域)[销售额].sum()plt.pie(area_sale.values,labelsarea_sale.index,autopct%.1f%%,startangle90)plt.title(各区域销售额占比)plt.axis(equal)# 正圆形plt.show()五、多子图绘制一张画布放多张图表# 2行2列布局fig,axesplt.subplots(2,2,figsize(14,10))# 子图1折线sns.lineplot(datasale_data,x月份,y销售额,axaxes[0,0])axes[0,0].set_title(月度销量趋势)# 子图2柱状sns.barplot(dataarea_sale,x区域,y销售额,axaxes[0,1])axes[0,1].set_title(区域销量对比)# 子图3直方图sns.histplot(sale_data[销售额],kdeTrue,axaxes[1,0])axes[1,0].set_title(销售额分布)# 子图4箱线图sns.boxplot(datasale_data,x区域,y销售额,axaxes[1,1])axes[1,1].set_title(销售额箱线图)plt.tight_layout()# 自动调整间距防止文字重叠plt.show()六、Seaborn经典配色方案# 内置调色盘直接赋值palette参数 基础deep, muted, pastel, bright, dark 渐变Blues, Greens, Oranges, Reds 对比Set1, Set2, Set3, Paired 冷暖coolwarm, RdBu七、图片保存导出高清报表图片# 保存高清图片dpi分辨率越高越清晰plt.savefig(数据分析图表.png,dpi300,bbox_inchestight)# bbox_inchestight裁掉多余白边八、常用场景选型总结图表适用场景折线图时序趋势、涨跌变化柱状图分类数据大小对比饼图各部分整体占比直方图数据分布区间箱线图查找异常值、离散程度散点图两个变量相关性热力图多指标相关系数矩阵