Matplotlib 在 Jupyter Notebook 中如何与数据框并列显示
当我们在 Jupyter Notebook 中使用 Matplotlib 绘制图形时,往往需要将数据和图形同时呈现,以便于进行对比分析。本文将介绍如何在 Jupyter Notebook 中通过 Matplotlib 实现数据和图形的并列显示。
阅读更多:Matplotlib 教程
准备工作
在正式开始前,我们需要进行一些准备工作。首先需要安装 Matplotlib 及相关依赖库。
!pip install matplotlib
!pip install pandas
!pip install numpy
在完成安装后,我们需要构造一些示例数据用于绘制图形和展示数据。
import pandas as pd
import numpy as np
# 设置随机种子
np.random.seed(42)
# 构造示例数据
data = pd.DataFrame({
'x': np.random.randn(100),
'y': np.random.randn(100),
'group': np.random.choice(['A', 'B', 'C'], 100),
'color': np.random.choice(['red', 'green', 'blue'], 100),
})
以上代码中,我们生成了一个100行4列的数据框,其中包含了随机生成的x、y坐标、group、color四列数据。
数据和图形分别显示
在通常情况下,我们是把数据和图形分别显示在两个单元格中的。
首先,我们使用 matplotlib 中的 scatter 函数绘制散点图,并通过不同颜色将不同组别的数据点分开。同时,我们使用默认的 rcParams 设置,来实现图形美观的展示。
import matplotlib.pyplot as plt
# 设置默认样式
plt.rcParams.update({
'font.family': 'Arial',
'font.size': 12,
'xtick.major.size': 2,
'xtick.major.width': 1,
'ytick.major.size': 2,
'ytick.major.width': 1,
'axes.spines.right': False,
'axes.spines.top': False,
})
# 绘制散点图
fig, ax = plt.subplots(figsize=(8, 5))
groups = data.groupby('group')
for name, group in groups:
ax.scatter(group.x, group.y, label=name, alpha=.8, s=30, c=group.color)
ax.legend(title='Group', loc='lower right')
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_title('Scatter plot')
plt.show()
运行以上代码,我们可以看到生成的散点图会自动弹出一个窗口,将图形展示在其中。
接着,我们使用 pandas 中的 head 函数来展示前5行数据。
data.head()
以上代码在输出时,会直接将数据框显示在单元格中。
这种方式的优点是数据和图形分别显示,图形展示起来更加美观清晰;相对来说缺陷就在于这种展示方式无法直接强调数据和图形之间的联系。
将数据和图形并列显示
要实现数据和图形的并列显示,我们可以借助于 IPython.display 模块中的 display 函数来帮助我们在同一单元格中呈现数据和图形。
from IPython.display import display
# 绘制散点图
fig, ax = plt.subplots(figsize=(8, 5))
groups = data.groupby('group')
for name, group in groups:
ax.scatter(group.x, group.y, label=name, alpha=.8, s=30, c=group.color)
ax.legend(title='Group', loc='lower right')
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_title('Scatter plot')
# 展示数据框
display(data.head())
以上代码在同一单元格中展示了散点图和数据框。
通过对比前两种展示方式,我们可以发现这种方式更加直观和方便,通过数据和图形的并列显示,我们可以更加清晰地了解数据和图形之间的联系。
高级应用
在实际应用中,我们可能还需要实现其他一些功能,比如将数据和图形拆分成多个窗口、调整图形大小、修改图形字体等等。
下面举例说明如何对图形字体进行调整。
# 设置字体
plt.rcParams.update({
'font.family': 'STKaiti',
'font.size': 14,
})
# 绘制散点图
fig, ax = plt.subplots(figsize=(8, 5))
groups = data.groupby('group')
for name, group in groups:
ax.scatter(group.x, group.y, label=name, alpha=.8, s=30, c=group.color)
ax.legend(title='Group', loc='lower right')
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_title('Scatter plot')
# 展示数据框
display(data.head())
在运行以上代码后,我们可以看到当字体从 Arial 改为 STKaiti 后,散点图中的字体也跟着发生了变化。
通过以上展示,我们可以看到在 Jupyter Notebook 中通过 Matplotlib 将数据和图形并列展示的过程,包括数据和图形分别显示和数据和图形在同一单元格中展示两种方式,针对实际应用场景也可以进行相关的高级应用。
总结
通过本文的介绍,我们掌握了在 Jupyter Notebook 中通过 Matplotlib 实现数据和图形的并列显示的方法,这种方式既方便清晰,又可根据实际需要进行调整和扩展。
极客教程