删除散点图中的绘制点 - matplotlib

时间:2015-01-06 16:12:58

标签: python matplotlib plot

以下示例是在其网站上提供的matplotlib散点图示例的简化版本,并显示我尝试从散点图中删除点

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import make_axes_locatable

# the random data
x = np.random.randn(2)
y = np.random.randn(2)


fig, axScatter = plt.subplots(figsize=(5.5,5.5))

# the scatter plot:
axScatter.scatter(x, y)
axScatter.set_aspect(1.)


np.delete(x,1)
np.delete(y,1)
axScatter.scatter(x, y)

plt.draw()
plt.show()

我无法找到一种方法,可以在绘图后从散点图中删除一个点,但如果我使用相同的方法,我可以绘制一个新的点。

1 个答案:

答案 0 :(得分:3)

您需要更新绘制的艺术家的数据。

此外,numpy.delete会返回已删除项目的数组副本,因此调用np.delete(x, 1)不会修改原始x。如果要删除第二项,则需要使用x = np.delete(x, 1)

作为一个简单的例子:

import numpy as np
import matplotlib.pyplot as plt
import time

x, y = np.random.random((2, 10))

fig, ax = plt.subplots()
scat = ax.scatter(x, y, s=150)

# Show the figure, then remove one point every second.
fig.show()
for _ in range(10):
    time.sleep(1)
    xy = np.delete(scat.get_offsets(), 0, axis=0)
    scat.set_offsets(xy)
    plt.draw()