数据可视化艺术:Matplotlib与Seaborn实战

目录

1.Matplotlib基础绘图与定制化

[1.1. 基础绘图](#1.1. 基础绘图)

[1.2. 定制化](#1.2. 定制化)

2.Seaborn高级图表类型与样式设定

[2.1. 高级图表类型](#2.1. 高级图表类型)

[2.2. 样式设定](#2.2. 样式设定)

3.实战:绘制多维度数据可视化报告

4.总结


1. 前言

在数据科学领域,数据可视化扮演着至关重要的角色。通过图形化的展示,我们可以更直观地理解数据的分布、趋势以及不同变量之间的关系。Matplotlib和Seaborn是两个在Python中非常流行的数据可视化库,前者提供了基础的绘图功能,后者则提供了更高级的图表类型和样式设定。接下来,我们将通过实战的方式,探索这两个库在数据可视化中的应用。 更多Python在人工智能中的应用案例,欢迎关注《Python人工智能实战》栏目!

2.Matplotlib基础绘图与定制化

2.1. 基础绘图

Matplotlib是Python中最为基础且功能强大的数据可视化库之一。它可以绘制各种类型的图表,如折线图、散点图、柱状图等,并且允许用户进行高度定制。

以下是一些基本图表的创建示例:

python 复制代码
import matplotlib.pyplot as plt
import numpy as np

# 创建数据
x = np.linspace(0, 2 * np.pi, 100)
y = np.sin(x)

# 绘制折线图
plt.plot(x, y, label='Sine Function')
plt.xlabel('Angle (radians)')
plt.ylabel('sin(x)')
plt.legend()
plt.show()  # 显示图形

# 绘制散点图
plt.scatter(x, np.cos(x), label='Cosine Function')
plt.xlabel('Angle (radians)')
plt.ylabel('cos(x)')
plt.legend()
plt.show()

# 绘制直方图
data = np.random.normal(loc=0, scale=1, size=1000)
plt.hist(data, bins=30, density=True, alpha=0.5, label='Normal Distribution')
plt.xlabel('Value')
plt.ylabel('Density')
plt.legend()
plt.show()

本例中折线图效果
本例中散点图效果
本例中直方图效果

2.2. 定制化

Matplotlib允许对图表的各个元素进行精细定制,包括颜色、线条样式、字体、坐标轴、图例、网格等。以下是对折线图进行定制的例子:

python 复制代码
import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 2 * np.pi, 100)
y = np.sin(x)

# 自定义颜色、线宽、线型
plt.plot(x, y, color='crimson', linewidth=2.5, linestyle='--')

# 设置坐标轴范围、刻度
plt.xlim([0, 2*np.pi])
# 使用LaTeX格式显示π
plt.xticks((-np.pi, -np.pi/2, np.pi/2, np.pi),(r'$\pi$', r'$-\frac{\pi}{2}$', r'$\frac{\pi}{2}$', r'$\pi$'))
# 添加图例、标题、网格
plt.legend(['Sine Function'])
plt.title('Customized Sine Plot')
plt.grid(True, linestyle='dashed', alpha=0.9)

# 修改字体、背景色
plt.rcParams['font.family'] = 'Arial'
plt.rcParams['axes.facecolor'] = 'lightgoldenrodyellow'

plt.show()

定制化效果

3.Seaborn高级图表类型与样式设定

Seaborn是基于Matplotlib的高级统计图形库,提供更高级别的接口和更美观的默认样式。它特别擅长展示多变量数据的复杂关系。

3.1. 高级图表类型

  • 线性回归图:展示两个连续变量之间的线性关系及其置信区间。
python 复制代码
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd

tips = sns.load_dataset("tips")

sns.lmplot(x="total_bill", y="tip", data=tips, hue="day", palette="muted")
plt.show()

线性回归图

  • 热力图:展示数据的二维矩阵,用颜色强度表示数值大小。
python 复制代码
import seaborn as sns
import pandas as pd
from matplotlib import pyplot as plt
tips = sns.load_dataset("tips")
# pandas2.0版本后,原来corr函数自动忽略字符串等非浮点数的特性被修改。现在需要加上numeric_only=True才会忽略字符串。
corr = tips.corr(numeric_only=True)
sns.heatmap(corr, annot=True, cmap='coolwarm')
plt.show()

热力图

3.2. 样式设定

Seaborn提供多种内置样式,可以通过set_theme()函数全局设置:

python 复制代码
import seaborn as sns
# style 包括:darkgrid、whitegrid、dark、white
sns.set_theme(style="darkgrid")  # 设置为深色网格样式

# 继续绘制图表...

也可以针对特定图表进行单独样式调整,如更改颜色映射、设置透明度等。

4.实战:绘制多维度数据可视化报告

以鸢尾花(Iris)数据集为例,我们使用Matplotlib与Seaborn联合创建一份包含多种图表的可视化报告:

python 复制代码
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
from sklearn.datasets import load_iris
import numpy as np
iris = load_iris()
df = pd.DataFrame(data=np.c_[iris['data'], iris['target']],
                  columns=iris['feature_names'] + ['species'])
print(df.columns)
# 分析不同物种花瓣长度与宽度的关系
sns.lmplot(x='sepal length (cm)', y='petal width (cm)', data=df, hue='species', col='species', ci=None)

plt.suptitle('Petal Length vs Width by Species')

# 展示所有特征间的相关性
corr = df.corr()
sns.heatmap(corr, annot=True, cmap='coolwarm', linewidths=.5)
plt.title('Feature Correlation Matrix')

# 绘制箱线图对比各物种的萼片长度
sns.boxplot(x='species', y='sepal length (cm)', data=df, palette='Set2')
plt.title('Sepal Length Distribution Across Species')

plt.show()

多维度数据可视化报告

这份报告包含了线性回归图、热力图以及箱线图,分别展示了鸢尾花不同物种间花瓣长度与宽度的关系、所有特征的相关性,以及萼片长度在不同物种间的分布情况。通过这样的多维度可视化,我们可以直观地洞察数据内在结构与关联,为后续数据分析提供有力支持。

5.总结

以上就是利用Matplotlib与Seaborn进行数据可视化的基础操作与实战应用,熟练掌握这些技巧将极大地提升数据洞察力和沟通效率。 更多Python在人工智能中的使用方法,欢迎关注《Python人工智能实战》栏目!

相关推荐
lijianhua_97128 小时前
国内某顶级大学内部用的ai自动生成论文的提示词
人工智能
EDPJ8 小时前
当图像与文本 “各说各话” —— CLIP 中的模态鸿沟与对象偏向
深度学习·计算机视觉
蔡俊锋8 小时前
用AI实现乐高式大型可插拔系统的技术方案
人工智能·ai工程·ai原子能力·ai乐高工程
自然语8 小时前
人工智能之数字生命 认知架构白皮书 第7章
人工智能·架构
大熊背8 小时前
利用ISP离线模式进行分块LSC校正的方法
人工智能·算法·机器学习
eastyuxiao9 小时前
如何在不同的机器上运行多个OpenClaw实例?
人工智能·git·架构·github·php
诸葛务农9 小时前
AGI 主要技术路径及核心技术:归一融合及未来之路5
大数据·人工智能
光影少年9 小时前
AI Agent智能体开发
人工智能·aigc·ai编程
极梦网络无忧9 小时前
OpenClaw 基础使用说明(中文版)
python
codeJinger9 小时前
【Python】操作Excel文件
python·excel