目录

1.Matplotlib基础绘图与定制化

1.1. 基础绘图

1.2. 定制化

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

2.1. 高级图表类型

 2.2. 样式设定

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

4.总结


1. 前言

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

2.Matplotlib基础绘图与定制化

2.1. 基础绘图

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

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. 高级图表类型

  • 线性回归图:展示两个连续变量之间的线性关系及其置信区间。
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()
  • 热力图:展示数据的二维矩阵,用颜色强度表示数值大小。
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()函数全局设置:

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

# 继续绘制图表...

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

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

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

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人工智能实战》栏目!

03-26 11:36