学习笔记(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、代码和执行结果

python 复制代码
import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt

data = 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()

执行结果:

图一:

图二:

相关推荐
学长毕设16 小时前
基于SpringBoot的青少年编程学习平台系统-附源码
spring boot·学习·青少年编程
小小de风呀20 小时前
de风——【从零开始学习Linux】(九):进程基础 —— 从冯诺依曼体系到 fork 创建进程
linux·学习
李某学编程20 小时前
基于ARM的微机原理学习笔记(一)
arm开发·笔记·学习
Song_RsHt21 小时前
Redis 与微服务,什么场景下无可替代
java·redis·后端·学习·微服务
sbjdhjd21 小时前
AI产业周度动态:从“更强模型”走向“可执行、可治理、可计价”的系统竞争 (2026年10月19日—10月25日)
人工智能·笔记·ai·开源·gemini·信息差·claude code
ss2731 天前
AI时代首先数据库-PostgreSQL实战笔记 27 PostgreSQL数据写入与读取流程解析
数据库·笔记·postgresql
深圳老胡1 天前
压力检测空吸功能硬件方案全解析:主流压力传感器品牌与实现路径
笔记·单片机·代码规范
程序猿追1 天前
返回 null 不一定入队成功:鸿蒙 KMP上的并发优先队列观察笔记
笔记·华为·harmonyos·kmp
~kiss~1 天前
PRO-LONG: Programmatic Memory Enables Long-Horizon Reasoning 程序式记忆赋能长程推理
学习
程序猿编码1 天前
不依赖 vLLM/llama.cpp:一套面向学习的 DeepSeek-R1 CUDA 推理实现
c++·学习·语言模型·llama·vllm·大模型推理