学习笔记(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()
sns.histplot(data['age'], kde=True)
- 使用 seaborn 绘制 age 列的直方图,并启用核密度估计 (KDE)plt.title('Distribution of age')
- 设置图表标题plt.xlabel('Age')
和plt.ylabel('Density')
- 设置坐标轴标签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()
sns.jointplot(...)
- 创建一个联合分布图,展示 age 和 score 两列之间的关系x='age'
和y='score'
- 指定要绘制的两个变量data=data
- 指定数据源kind='scatter'
- 指定散点图类型
这段代码类似:sns.jointplot(x=data['age'], y=data['score'], kind='scatter')
g.fig.suptitle('Age vs Score')
- 设置整个联合分布图的标题plt.subplots_adjust(top=0.9)
- 调整图表布局,为标题腾出空间plt.show()
- 显示图表
2.4、总结
这段代码通过 seaborn 库实现了两种常见的数据可视化:
- 单变量分析 - 展示 age 列的分布情况,使用直方图和核密度估计曲线
- 双变量分析 - 展示 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()
执行结果:
图一:

图二:
