news 2026/6/10 6:59:25

第二章——数据分析场景之Python数据可视化:用Matplotlib与Seaborn绘制洞察之图

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
第二章——数据分析场景之Python数据可视化:用Matplotlib与Seaborn绘制洞察之图

在数据分析的领域中,数据可视化扮演着举足轻重的角色。原始的数据分析结果往往以数字和表格的形式呈现,虽然包含丰富信息,但人们很难从中快速直观地获取关键洞察。可视化报表则如同一位翻译官,将枯燥的数据转化为生动直观的图表,使数据中的模式、趋势和关系一目了然。本部分将深入介绍如何使用Python中的MatplotlibSeaborn库创建可视化报表。

一、课程引入:可视化对理解数据分析结果的重要性

想象一下,你手中有一份销售数据报表,其中记录了过去一年每个月的销售额。如果仅查看数字表格,你可能需要花费一些时间来计算和比较,才能了解销售额的变化趋势、季节性波动等信息。然而,当这些数据以折线图的形式呈现时,销售额随时间的上升或下降趋势会立刻映入眼帘。又比如,在分析不同产品的市场占有率时,饼图可以让你瞬间看清各产品之间的比例关系。数据可视化能够帮助我们超越数据的表面,快速理解数据背后的故事,从而为决策提供有力支持。

二、需求分析

我们的目标是接收经过清洗后的数据,根据数据分析的具体需求选择合适的图表类型,如柱状图用于比较不同类别数据的大小,折线图用于展示数据随时间或其他连续变量的变化趋势等,最终输出高质量的可视化图表。

三、核心功能拆解

  1. 数据预处理:在绘制图表之前,对清洗后的数据进行进一步处理,例如计算统计量、聚合数据等,以满足不同图表类型的要求。
  2. 图表创建:依据选定的图表类型,使用MatplotlibSeaborn库中的相应函数创建图表,并将处理后的数据映射到图表元素上。
  3. 图表美化:为创建好的图表添加标题、坐标轴标签、调整颜色等,使图表更具可读性和吸引力,准确传达数据信息。

四、代码分步实现

导入matplotlibseaborn库,讲解两者特点

Matplotlib是Python中最基础的数据可视化库,它提供了广泛的绘图函数和方法,具有高度的灵活性,几乎可以定制图表的每一个细节。它适用于创建各种类型的简单到复杂的图表,并且与NumPy和Pandas等数据处理库无缝集成。
Seaborn则是基于Matplotlib构建的高级可视化库,它专注于统计数据的可视化,默认样式美观,能够轻松创建具有出版质量的图表。Seaborn在处理分类数据、回归分析等方面具有简洁易用的函数,使得绘制复杂统计图表变得更加容易。

下面是导入这两个库的代码:

importmatplotlib.pyplotaspltimportseabornassns

预处理数据,如计算统计量

假设我们有一份存储在pandasDataFrame中的销售数据,包含产品名称和对应的销售额。为了绘制柱状图比较各产品销售额,我们可能不需要额外的预处理。但如果要绘制一些统计图表,如箱线图展示销售额的分布情况,可能需要计算一些统计量。

importpandasaspd# 示例数据data={'Product':['A','B','C','D','E'],'Sales':[120,80,150,90,100]}df=pd.DataFrame(data)

根据需求选择图表类型(如柱状图、折线图)并创建图表,注释关键绘图函数

柱状图(使用Matplotlib
# 绘制柱状图plt.bar(df['Product'],df['Sales'])plt.xlabel('Product')plt.ylabel('Sales')

在上述代码中,plt.bar()Matplotlib中用于绘制柱状图的函数。第一个参数是柱子的横坐标,这里是产品名称;第二个参数是柱子的高度,即销售额。plt.xlabel()plt.ylabel()分别用于设置x轴和y轴的标签。

折线图(使用Seaborn

假设我们的数据是按时间顺序记录的销售额,要绘制销售额随时间的变化趋势。

# 示例时间序列数据time_series_data={'Month':['Jan','Feb','Mar','Apr','May'],'Sales':[120,130,110,140,150]}ts_df=pd.DataFrame(time_series_data)# 绘制折线图sns.lineplot(x='Month',y='Sales',data=ts_df)

这里使用seabornlineplot()函数绘制折线图。x参数指定x轴的数据列,y参数指定y轴的数据列,data参数指定数据源DataFrame

美化图表,包括标题、坐标轴标签、颜色设置等,讲解相关函数

使用Matplotlib美化图表
# 绘制柱状图并美化plt.bar(df['Product'],df['Sales'],color='skyblue')plt.title('Product Sales Comparison')plt.xlabel('Product')plt.ylabel('Sales')plt.xticks(rotation=45)

plt.bar()函数的color参数用于设置柱子的颜色。plt.title()函数用于添加图表标题。plt.xticks(rotation = 45)将x轴刻度标签旋转45度,使标签更易读。

使用Seaborn美化图表
# 绘制折线图并美化sns.lineplot(x='Month',y='Sales',data=ts_df,color='red',linewidth=2)plt.title('Monthly Sales Trend')plt.xlabel('Month')plt.ylabel('Sales')

seabornlineplot()函数中,color参数设置折线的颜色,linewidth参数设置折线的宽度。同样使用plt.title()plt.xlabel()plt.ylabel()设置标题和坐标轴标签。

保存或显示图表,说明不同输出方式

要显示图表,可以使用plt.show()函数。

# 显示Matplotlib绘制的柱状图plt.show()# 显示Seaborn绘制的折线图plt.show()

如果要保存图表为文件,可以使用plt.savefig()函数。例如,将柱状图保存为product_sales.png

plt.bar(df['Product'],df['Sales'],color='skyblue')plt.title('Product Sales Comparison')plt.xlabel('Product')plt.ylabel('Sales')plt.xticks(rotation=45)plt.savefig('product_sales.png')

plt.savefig()函数的参数是保存的文件名,可以指定文件格式,如.png.pdf等。

五、优化迭代:提高图表交互性,适配不同数据量展示

对于提高图表交互性,可以使用matplotlib的交互式后端,如ipympl(适用于Jupyter Notebook环境)。安装后,在Notebook中运行%matplotlib widget,即可创建具有交互功能(如缩放、平移等)的图表。

对于不同数据量展示,当数据量较大时,Seaborn的一些统计图表(如箱线图、小提琴图)可以更好地展示数据分布。Matplotlib也可以通过调整图表的分辨率、字体大小等参数,使图表在大数据量下依然清晰可读。例如,在绘制柱状图时,如果柱子过多导致标签重叠,可以适当调整字体大小或旋转标签角度,或者使用plt.tight_layout()函数自动调整布局。

六、部署测试:在不同显示设备上查看图表效果

在完成图表绘制后,需要在不同的显示设备上查看图表效果,包括电脑显示器(不同分辨率)、平板电脑和手机等。确保图表的布局合理,文字和图形元素易于查看,颜色在不同设备上显示正常。例如,某些颜色在手机屏幕上可能显示过于鲜艳或暗淡,需要适当调整颜色方案。

七、问题排查:解决图表显示异常(如坐标轴刻度错误、颜色冲突)等问题

坐标轴刻度错误可能是由于数据范围与默认刻度设置不匹配导致的。可以使用plt.xticks()plt.yticks()函数手动设置刻度,或者使用plt.xlim()plt.ylim()函数设置坐标轴范围。

颜色冲突通常发生在图表中有多个元素需要设置颜色时,选择的颜色可能在视觉上产生混淆。可以参考一些颜色搭配方案,或者使用Seaborn的调色板(如color_palette()函数)来选择合适的颜色组合。

以下是一个简单实现的完整代码示例,展示了使用Matplotlib绘制柱状图和Seaborn绘制折线图的全过程:

importpandasaspdimportmatplotlib.pyplotaspltimportseabornassns# 柱状图数据data={'Product':['A','B','C','D','E'],'Sales':[120,80,150,90,100]}df=pd.DataFrame(data)# 绘制并美化柱状图plt.bar(df['Product'],df['Sales'],color='skyblue')plt.title('Product Sales Comparison')plt.xlabel('Product')plt.ylabel('Sales')plt.xticks(rotation=45)plt.savefig('product_sales.png')plt.show()# 折线图数据time_series_data={'Month':['Jan','Feb','Mar','Apr','May'],'Sales':[120,130,110,140,150]}ts_df=pd.DataFrame(time_series_data)# 绘制并美化折线图sns.lineplot(x='Month',y='Sales',data=ts_df,color='red',linewidth=2)plt.title('Monthly Sales Trend')plt.xlabel('Month')plt.ylabel('Sales')plt.savefig('monthly_sales_trend.png')plt.show()

通过以上步骤,我们可以使用MatplotlibSeaborn创建出美观、直观且具有信息传达力的可视化报表。希望大家通过实践,熟练掌握这些可视化技巧,让数据以更生动的方式讲述它们的故事。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 12:25:48

【Java毕设全套源码+文档】基于springboot的高校“智慧党建”管理系统的设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

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

用sticky定位5分钟打造阅读目录导航

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 快速开发一个文章目录导航组件原型。功能要求:1. 左侧显示带标题层级的目录树 2. 右侧显示长篇文章内容(h2-h4标题结构) 3. 滚动时左侧目录自动高亮当前阅读章节 4. 点击…

作者头像 李华
网站建设 2026/6/10 12:31:21

5分钟验证:云端PDF打印解决方案原型

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 构建一个云端PDF打印服务原型,用户无需安装本地驱动即可通过网页生成PDF。要求包含文件上传接口、云端打印队列管理、PDF生成引擎和下载功能。前端使用响应式设计&#…

作者头像 李华
网站建设 2026/6/10 12:30:54

基本布局(layout)

总目录 布局就是layout文件中的一种标签&#xff0c;定义了一个容器。不同的布局有不同的特性。 1. LinearLayout&#xff08;线性布局&#xff09; 线性布局是一种顺序布局&#xff0c;是一个从上到下或从左到右的布局。 <?xml version"1.0" encoding"utf-…

作者头像 李华
网站建设 2026/6/10 12:30:53

Flink学习笔记:如何做容错

现在我们已经了解了 Flink 的状态如何定义和使用&#xff0c;那 Flink 是如何做容错的呢&#xff1f;今天我们一起来了解一下。 先来回答问题&#xff0c; Flink 是通过状态快照来做容错的&#xff0c;在 Flink 中状态快照分为 Checkpoint 和 Savepoint 两种。 Checkpoint Chec…

作者头像 李华