Python 如何从绘图中删除点?

Python 如何从绘图中删除点?,python,matplotlib,Python,Matplotlib,我正在使用matplotlib.pyplot 我想做以下工作: 我想绘制一系列背景点(图中的单个蓝点) 示例) 我添加了一系列额外的点(示例中有3个黑点) 我保留这个数字 我删除了附加的一系列点(黑色),并保留背景一个(蓝色) 如何执行步骤4?我想避免重复背景点 下面是缺少步骤4的代码示例 import matplotlib.pyplot as plt fig = plt.figure() plt.xlim(-10,10) plt.ylim(-10,10) #step 1: backgro

我正在使用matplotlib.pyplot

我想做以下工作:

  • 我想绘制一系列背景点(图中的单个蓝点) 示例)
  • 我添加了一系列额外的点(示例中有3个黑点)
  • 我保留这个数字
  • 我删除了附加的一系列点(黑色),并保留背景一个(蓝色)
  • 如何执行步骤4?我想避免重复背景点

    下面是缺少步骤4的代码示例

    import matplotlib.pyplot as plt
    
    fig = plt.figure()
    
    plt.xlim(-10,10)
    plt.ylim(-10,10)
    
    #step 1: background blue dot
    plt.plot(0,0,marker='o',color='b')
    
    #step 2: additional black dots
    points_list = [(1,2),(3,4),(5,6)]
    for point in points_list:
        plt.plot(point[0],point[1],marker='o',color='k')
    
    #step 3: save
    plt.savefig('test.eps')
    
    #step 4: remove additional black dots
    
    您可以使用:

    #step 2
    black_points, = plt.plot( zip(*points_list), marker="o", color="k")
    
    #... step 3 ...
    #...
    
    #step 4
    black_points.set_visible( False)
    
    您可以使用:

    #step 2
    black_points, = plt.plot( zip(*points_list), marker="o", color="k")
    
    #... step 3 ...
    #...
    
    #step 4
    black_points.set_visible( False)
    

    执行以下操作可以删除打印点:

    temporaryPoints, = plt.plot(point[0],point[1],marker='o',color='k')
    temporaryPoints.remove()
    

    执行以下操作可以删除打印点:

    temporaryPoints, = plt.plot(point[0],point[1],marker='o',color='k')
    temporaryPoints.remove()
    
    函数返回表示打印数据的对象列表。这些对象有一种方法,可以将它们从绘制在其上的图形中删除(请注意,
    Line2D
    继承自
    Artist
    ,您可以通过
    Line2D进行检查。)

    因此,您可以执行以下操作(我一次绘制了单点):

    保持
    循环的
    ,这将是:

    points = []
    for point in points_list:
        points.extend(
            plt.plot(point[0], point[1], marker='o', color='k')
        )
    for p in points:
        p.remove()
    
    或更简洁地使用列表理解:

    points = [plt.plot(*p, marker='o', color='k')[0] for p in points_list]
    
    函数返回表示打印数据的对象列表。这些对象有一种方法,可以将它们从绘制在其上的图形中删除(请注意,
    Line2D
    继承自
    Artist
    ,您可以通过
    Line2D进行检查。)

    因此,您可以执行以下操作(我一次绘制了单点):

    保持
    循环的
    ,这将是:

    points = []
    for point in points_list:
        points.extend(
            plt.plot(point[0], point[1], marker='o', color='k')
        )
    for p in points:
        p.remove()
    
    或更简洁地使用列表理解:

    points = [plt.plot(*p, marker='o', color='k')[0] for p in points_list]
    

    谢谢,如果我在第一行的“临时点”后面加一个逗号就可以了。谢谢,如果我在第一行的“临时点”后面加一个逗号就可以了。