大家好,我是木木。
今天给大家分享一个统计可视化的 Python 库,seaborn。
seaborn
seaborn 是基于 Matplotlib 的统计可视化库,适合用更少代码画出更清楚的分布、分类、回归和关系图。它的核心优势不是替代 Matplotlib,而是把常见统计图的默认样式、DataFrame 语义和分组映射整理得更顺手。做探索性分析时,seaborn 往往能让你更快看到数据结构。
项目地址:https://github.com/mwaskom/seaborn
官方文档:http://seaborn.pydata.org
三大特点
统计友好
histplot、catplot、scatterplot 等 API 很贴近分析问题。
样式省心
默认主题比裸 Matplotlib 更适合快速报告。
DataFrame 语义
x、y、hue、col 等参数能直接绑定字段。
最佳实践
安装方式:pip install seaborn。建议先用小数据验证图表对象和输出结构,再把样式、导出和嵌入流程固定到项目模板里。
第一段代码解决的问题是:创建最小可运行图表对象,并确认库版本和核心图形元素。
fromimportlib.metadataimportversionimportmatplotlibmatplotlib.use("Agg")importpandasaspdimportseabornassnsdf=pd.DataFrame({"x":[1,2,3,4],"y":[2,5,3,6],"team":["A","A","B","B"]})ax=sns.scatterplot(data=df,x="x",y="y",hue="team")print("seaborn:",version("seaborn"))print("collections:",len(ax.collections))print("legend:",ax.get_legend()isnotNone)
第二段代码解决的问题是:加入更接近真实业务的字段、布局或图层配置。
importmatplotlibmatplotlib.use("Agg")importpandasaspdimportseabornassnsdf=pd.DataFrame({"score":[72,81,88,91,95,77]})ax=sns.histplot(data=df,x="score",bins=3,kde=True)print("patches:",len(ax.patches))print("lines:",len(ax.lines))
环境与版本信息
本文示例使用 Python 3.11.0,演示代码在本地真实运行;图形类示例避免打开 GUI 窗口,适合截图和自动化验证。
高级功能
seaborn 的进阶能力在 FacetGrid 和语义映射。把分类、颜色、子图映射给字段,可以快速观察分组差异。
进阶示例解决的问题是:把图表配置导出、组合或扩展到更适合工程使用的结构。
importmatplotlibmatplotlib.use("Agg")importpandasaspdimportseabornassnsdf=pd.DataFrame({"day":["Mon","Tue","Mon","Tue"],"value":[3,5,4,6],"team":["A","A","B","B"]})g=sns.catplot(data=df,x="day",y="value",col="team",kind="bar")print("facet axes:",len(g.axes.flat))print("col names:",list(g.col_names))
适用场景
适合探索性数据分析、分布观察、分组对比、Notebook 报告和基于 pandas 的统计图。
不适用场景
不适合浏览器交互 dashboard,或需要完全自定义底层绘图对象的复杂出版图。
上线检查
- 明确图表是静态导出、Notebook 交互、桌面 GUI 还是 Web 嵌入。
总结
seaborn 很顺手。它让统计图更快、更好看,也保留了 Matplotlib 的后续调整空间。