Matplotlib Plot 动态更改图表
Matplotlib 是 Python 的一个绘图库,它可以绘制各种类型的图表,包括散点图、折线图、饼图等等。在 Jupyter Notebook 环境中使用 Matplotlib 可以方便地进行数据可视化。本文将介绍如何在 Jupyter Notebook 中使用 Matplotlib 绘制动态更改的图表。
阅读更多:Matplotlib 教程
准备工作
在开始之前,需要先安装 Matplotlib:
pip install matplotlib
接着,导入需要的库:
import matplotlib.pyplot as plt
import numpy as np
from IPython.display import clear_output
绘制静态图表
首先,我们来绘制一张静态的折线图。假设我们有一组数据:
x = np.linspace(0, 2 * np.pi, 100)
y = np.sin(x)
我们可以用 plt.plot()
函数将这组数据画出来:
plt.plot(x, y)
plt.show()
这段代码的含义是,将 x
和 y
的值分别作为横坐标和纵坐标,画出一条折线图,并显示在 Jupyter Notebook 中。
更改图表
接下来,我们要实现一个动态更改的图表。假设我们有一组正弦值的动态数据,它们不断变化,我们希望把这些数据实时反映在图表上。
首先,我们需要设置一个 Figure
对象和一个 Axes
对象:
fig, ax = plt.subplots()
然后,我们需要一个函数来更新数据并绘制图表。我们可以将这个函数命名为 update()
。在这个函数中,我们需要先更新数据,再绘制图表。
def update():
# 更新数据
x = np.linspace(0, 2 * np.pi, 100)
y = np.sin(x + update.counter/10)
update.counter += 1
# 绘制图表
ax.clear()
ax.plot(x, y)
plt.draw()
# 清除输出,避免重复显示
clear_output(wait=True)
# 输出图表
plt.show()
在这个函数中,我们首先更新数据 x
和 y
。在这里,我们将 x
的值保持不变,而将 y
的值进行了更新。具体来说,我们将 x
的值加上一个常数,得到一个新的 y
值。这样,我们就得到了一个动态的图表,它可以不断变化。
接着,我们在 Axes
上绘制图表,并使用 ax.clear()
函数清除之前的图表。注意,如果不清除之前的图表,新的图表将会叠加在之前的图表上面。
最后,我们使用 clear_output()
函数清除输出,避免重复显示。这是因为 Jupyter Notebook 中,每次更新图表时都会在输出区域显示一个新的图表,如果没有清除输出,就会出现多个图表重叠在一起的情况。
现在,我们已经定义了一个更新函数 update()
,它可以更新数据并绘制图表。接下来,我们需要定义一个计数器 update.counter
,并将其初始化为0。计数器的作用是控制数据的更新速度。
update.counter = 0
最后,我们可以使用 interactive()
函数生成一个交互式按钮,用于触发更新函数。具体来说,我们可以使用以下代码:
from IPython.display import display
from ipywidgets import interactive
button = interactive(update)
display(button)
现在,我们就可以在 Jupyter Notebook 中看到一个按钮了。每次点击这个按钮,就会触发更新函数,并更新图表。我们可以通过调整计数器的值来控制更新的速度,从而控制图表的动态效果。
完整代码
下面是完整的代码,你可以直接拷贝到 Jupyter Notebook 中运行。
import matplotlib.pyplot as plt
import numpy as np
from IPython.display import clear_output
from ipywidgets import interactive
from IPython.display import display
fig, ax = plt.subplots()
update.counter = 0
button = interactive(update)
display(button)
def update():
# 更新数据
x = np.linspace(0, 2 * np.pi, 100)
y = np.sin(x + update.counter/10)
update.counter += 1
# 绘制图表
ax.clear()
ax.plot(x, y)
plt.draw()
# 清除输出,避免重复显示
clear_output(wait=True)
# 输出图表
plt.show()
总结
在本文中,我们介绍了如何使用 Matplotlib 在 Jupyter Notebook 中绘制动态更改的图表。我们首先绘制了一张静态的折线图,然后通过定义更新函数和计数器来实现了一个动态图表。最后,我们使用交互式按钮触发更新函数,控制图表的动态效果。