Matplotlib 要删除多余的图示

Matplotlib 要删除多余的图示

在数据可视化中,Matplotlib是了解和掌握的重要工具之一,特别是用于绘制子图。但是,它有时可能会产生一些不需要的附加线条,这些附加线条可能会影响您的数据可视化效果。在本文中,我们将讨论如何删除Matplotlib子图中的多余的绘图。

阅读更多:Matplotlib 教程

1. Matplotlib中的子图

Matplotlib是一种使用最广泛的数据可视化工具库之一,由于Matplotlib提供了广泛的Api和功能,因此Matplotlib已成为绘制各种图形的首选工具。在Matplotlib中,subplots函数用于创建子图,subplots函数包含两个参数都为正整数nrows和ncols,用于指定子图布局的行数和列数。例如,如果我们要绘制2行2列的子图布局,则可以使用以下代码:

import matplotlib.pyplot as plt

fig, ax = plt.subplots(nrows=2, ncols=2)
Python

这将创建一个具有2行2列子图的图像对象。现在,我们将在这个子图的第一个位置中添加一个散点图。

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots(nrows=2, ncols=2)
x = np.random.rand(10)
y = np.random.rand(10)
ax[0, 0].scatter(x, y)
plt.show()
Python

这将创建一个具有2行2列子图的图像对象。现在,我们将在这个子图的第一个位置中添加一个散点图。

2. 删除多余的图形

在上面的散点图中,您可能已经注意到了一些不必要的附加绘图。这是由于此子图布局中的每种颜色对应于一个不必要的绘图(蓝色和绿色)。这些附加绘图消耗的内存和增加了图形元素,因此您可能需要从子图中删除这些绘图。

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots(nrows=2, ncols=2)
x = np.random.rand(10)
y = np.random.rand(10)
sp = ax[0, 0].scatter(x, y)
sp.remove()
plt.show()
Python

这将在子图中只显示一种颜色,即红色。应用remove()函数将从第一个子图中删除蓝色和绿色圆圈。

3. 删除多个图形

如果您有多个图形需要删除,可以使用以下两种方法之一:

3.1 获取所有图表元素

您可以通过调用子图中的元素列表来检索所有图表元素,并通过调用对应的remove函数来删除它。

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots(nrows=2, ncols=2)
x = np.random.rand(10)
y = np.random.rand(10)
sp = ax[0, 0].scatter(x, y)
for c in sp.collections:
    for off in c.get_offsets():
        # remove elements outside boundaries of the circle
        if (np.linalg.norm(off) > 1.0):
            c.remove()
plt.show()
Python

这将删除第一个子图中所有超过一个单位圆的元素。

3.2 获取每个数据点

您可以通过以下方式获取所有数据点并删除不需要的点:

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots(nrows=2, ncols=2)
x = np.random.rand(10)
y = np.random.rand(10)
sp = ax[0, 0].scatter(x, y)
for i in range(len(sp.get_offsets())):
    off = sp.get_offsets()[i]
    if (np.linalg.norm(off) > 1.0):
        sp.remove()
plt.show()
Python

与第一个示例不同,该代码通过将get_group()函数与get_offset()函数结合使用来检索每个数据点。如果点的半径大于1.0,则使用remove()函数删除它。

4. 总结

在Matplotlib的子图中,您可以使用remove()函数从绘图中删除多余的绘图元素。这有助于减少内存占用并提高可视化效果。您可以使用简单的方法或get_elements()函数来获取要删除的所有元素。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册