当前位置: 首页 > news >正文

学习笔记(32):matplotlib绘制简单图表-数据分布图

学习笔记(32):matplotlib绘制简单图表-数据分布图

1、引用

import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt

这部分是导入必要的库:

  • seaborn 提供高级数据可视化功能
  • pandas 用于数据处理
  • matplotlib.pyplot 提供基础绘图功能

2、导入数据和创建图

2.1、导入数据

data = pd.read_csv('../../data/data.csv')

使用 pandas 读取 CSV 文件并将数据存储在data变量中。文件路径../../data/data.csv表示向上两级目录后进入 data 文件夹读取 data.csv 文件。

data.csv

name,age,score
Alice,12,66
lisa,15,88
helen,18,78
alisa,12,96
jerry,20,55
Bob,25,70
sally,18,85

2.2、单变量分布

# 单变量分布(直方图+核密度估计)
sns.histplot(data['age'], kde=True)
plt.title('Distribution of age')
plt.xlabel('Age')
plt.ylabel('Density')  # 对于带KDE的直方图
plt.show()

  1. sns.histplot(data['age'], kde=True) - 使用 seaborn 绘制 age 列的直方图,并启用核密度估计 (KDE)
  2. plt.title('Distribution of age') - 设置图表标题
  3. plt.xlabel('Age') 和 plt.ylabel('Density') - 设置坐标轴标签
  4. plt.show() - 显示图表

2.3、多变量联合分布可视化:

# 多变量联合分布
g = sns.jointplot(x='age', y='score', data=data, kind='scatter')
g.fig.suptitle('Age vs Score')  # 添加联合分布图的标题
plt.subplots_adjust(top=0.9)    # 调整标题位置
plt.show()

  1. sns.jointplot(...) - 创建一个联合分布图,展示 age 和 score 两列之间的关系
    • x='age' 和 y='score' - 指定要绘制的两个变量
    • data=data - 指定数据源
    • kind='scatter' - 指定散点图类型

           这段代码类似:sns.jointplot(x=data['age'], y=data['score'], kind='scatter')

  1. g.fig.suptitle('Age vs Score') - 设置整个联合分布图的标题
  2. plt.subplots_adjust(top=0.9) - 调整图表布局,为标题腾出空间
  3. plt.show() - 显示图表

2.4、总结

这段代码通过 seaborn 库实现了两种常见的数据可视化:

  1. 单变量分析 - 展示 age 列的分布情况,使用直方图和核密度估计曲线
  2. 双变量分析 - 展示 age 和 score 之间的关系,使用散点图

这两种可视化方式可以帮助数据分析师快速了解数据的分布特征和变量间的关系。

3、代码和执行结果

import seaborn as sns
import pandas as pd
import matplotlib.pyplot as pltdata = pd.read_csv('../../data/data.csv')# 单变量分布(直方图+核密度估计)
sns.histplot(data['age'], kde=True)
plt.title('Distribution of age')
plt.xlabel('Age')
plt.ylabel('Density')  # 对于带KDE的直方图
plt.show()# 多变量联合分布
g=sns.jointplot(x='age', y='score', data=data, kind='scatter')
g.fig.suptitle('Age vs Score')  # 添加联合分布图的标题
plt.subplots_adjust(top=0.9)    # 调整标题位置
plt.show()

执行结果:

图一:

图二:

http://www.xdnf.cn/news/1096309.html

相关文章:

  • Linux Vim 编辑器详解:从入门到进阶(含图示+插件推荐)
  • Java从入门到精通!第三天(数组)
  • 【threejs】第一人称视角之八叉树碰撞检测
  • 论文笔记(LLM distillation):Distilling Step-by-Step!
  • MiniGPT4源码拆解——models
  • 原生微信小程序研发,如何对图片进行统一管理?
  • 微信小程序101~110
  • UnrealEngine5游戏引擎实践(C++)
  • Android Coil 3 data加载图的Bitmap或ByteArray数据类型,Kotlin
  • Android 如何阻止应用自升级
  • C语言 | 函数核心机制深度解构:从底层架构到工程化实践
  • Matplotlib 全面使用指南 -- 自动缩放坐标轴 Autoscaling Axis
  • 【Linux】Linux 操作系统 - 27 , 进程间通信(三) --System V 共享内存
  • 编写bat文件自动打开chrome浏览器,并通过selenium抓取浏览器操作chrome
  • 抽象类基础知识
  • 如何选择合适的ai降重工具?七个实用的ai查重网站
  • 【会员专享数据】2013-2024年我国省市县三级逐日SO₂数值数据(Shp/Excel格式)
  • 告别繁琐:API全生命周期管理的新范式——apiSQL
  • 调用京东API接口时,如果超过了调用频率限制,应该如何处理?【项目经验分享】
  • Django+DRF 实战:自定义异常处理流程
  • FeatherScan v4.0 – 适用于Linux的全自动内网信息收集工具
  • 快速搭建服务器,fetch请求从服务器获取数据
  • linux网络编程之读缓冲区设计
  • 系统性部署系统母盘【rhel7和rhel9】
  • 腾讯云分为几个区域
  • 2025社交电商新风口:推客小程序的商业逻辑与技术实现
  • 以太网基础⑤UDP 协议原理与 FPGA 实现
  • 《信号与系统》学习笔记——第八章(补充部分)
  • 分库分表之实战-sharding-JDBC分库分表执行流程原理剖析
  • 【算法笔记】6.LeetCode-Hot100-链表专项